Linux 守护进程(Daem)on)详解
你现在需要理解的Linux守护进程,是Linux系统中最核心的进程类型之一,结合你之前遇到的docker daemon报错,先给一个通俗又精准的定义:
一、 守护进程核心定义
Linux守护进程(英文:Daemon,简称:d)是在后台长期运行、脱离终端控制、独立于用户会话的特殊进程,它不与任何交互式终端(比如你操作的SSH终端、虚拟机控制台)绑定,通常在系统启动时自动启动,系统关机时才终止,核心作用是为系统或用户提供持续的后台服务。
简单说:守护进程就是Linux系统的“后台服务员”,默默在后台提供各类服务,不打扰用户的前台操作。你之前遇到的Docker daemon(dockerd),就是为Docker提供容器创建、镜像拉取、容器启停等后台服务的守护进程,它没启动,Docker就无法工作,这也是你雷池WAF安装报错的核心原因。
二、 守护进程核心特征(与普通进程的区别)
- 1. 后台运行:不占用交互式终端,不会在你操作的终端中输出信息(除非手动配置日志输出),普通进程(如
ls、ping、rm)默认在前台运行,会占用终端。 - 2. 脱离终端:这是最关键的特征!即使启动守护进程的终端关闭(比如你断开SSH连接、关闭虚拟机控制台),守护进程依然会继续运行;而普通进程会随终端关闭而终止。
- 3. 长期存活:生命周期极长,通常从系统开机启动后一直运行到系统关机,除非手动停止或进程异常崩溃;普通进程(如执行
cat命令)执行完任务后会立即退出。 - 4. 独立会话:不属于任何用户终端会话,由系统内核管理,通常以
root用户(或专用系统用户)身份运行,拥有较高权限。 - 5. 服务导向:核心用途是提供持续的系统服务或应用服务,而非执行一次性任务,比如:
- •
dockerd:Docker守护进程,提供容器管理服务 - •
sshd:SSH守护进程,提供远程连接Linux的服务 - •
firewalld:防火墙守护进程,提供系统防火墙服务 - •
crond:定时任务守护进程,提供定时执行命令的服务 - •
nginx:Web服务守护进程,提供网站访问服务
三、 典型守护进程示例(你已接触/高频使用)
| | |
dockerd | | |
sshd | | |
firewalld | | |
crond | | |
nginx | | |
mysql | | |
四、 守护进程与普通进程的核心区别
五、 守护进程常用操作命令(贴合你的实操场景)
结合你之前的操作,这些命令是管理守护进程的核心,直接套用即可:
- 1. 查看指定守护进程状态(如Docker、firewalld)
# 查看Docker守护进程状态(显示active(running)即为正常运行)systemctl status docker# 查看防火墙守护进程状态systemctl status firewalld
# 启动Docker守护进程systemctl start docker# 启动防火墙守护进程systemctl start firewalld
# 停止Docker守护进程systemctl stop docker# 停止防火墙守护进程systemctl stop firewalld
- 4. 设置守护进程开机自启(避免系统重启后需要手动启动)
# Docker守护进程开机自启(你之前操作过,确保重启虚拟机后Docker自动运行)systemctl enable docker# 防火墙守护进程开机自启systemctl enable firewalld
# 方法1:过滤掉终端相关进程,只显示守护进程(推荐)ps aux | grep -v tty# 方法2:查看系统服务类守护进程(更精准)systemctl list-units --type=service --state=running
六、 补充小知识点(避坑+进阶)
- 1. 守护进程的命名规律:很多守护进程的名称以
d结尾(daemon的缩写),方便识别,比如dockerd、sshd、crond、mariadbd,但并非所有守护进程都遵循此规律(如nginx、mysql)。 - 2. 临时后台运行vs守护进程:普通进程后加
&(如ping www.baidu.com &)可临时后台运行,但它仍与终端绑定,终端关闭进程就会终止,并非真正的守护进程。 - 3. 守护进程异常排查:若守护进程启动失败(如
docker启动失败),可通过以下命令查看日志排查问题:
# 查看Docker守护进程日志(实时刷新,按Ctrl+C退出)journalctl -u docker -f
总结
- 1. 守护进程是Linux后台长期运行、脱离终端的“服务提供者”,
dockerd是你实操中接触的典型代表; - 2. 核心区别:脱离终端、长期存活,与普通一次性进程截然不同;
- 3. 核心操作:通过
systemctl status/start/stop/enable管理系统级守护进程,这是你后续操作高频用到的命令。