什么是守护进程(Daemon)?
守护进程(英语:Daemon,发音为 /ˈdiːmən/ 或 /ˈdeɪmən/)是计算机操作系统中一种在后台运行的特殊进程。
简单来说,它是默默在后台干活的“隐形服务生”。
以下是关于守护进程的详细解析:
1. 核心定义
守护进程不接受标准输入(Standard Input),也不向标准输出(Standard Output)发送数据。这意味着它不与用户直接交互,不受终端(Terminal)控制。无论你是否登录系统,或者关闭了显示器,守护进程通常都在运行。
2. 名字的由来与命名习惯
- 由来: "Daemon" 这个词源于希腊神话中的“守护神”或“精灵”,后来物理学中的“麦克斯韦妖”(Maxwell's Demon)也用了这个词。它的寓意是:在后台不知疲倦地处理任务,维持系统秩序。(注意:它不是 Demon/恶魔)。
- 命名习惯: 在 Unix/Linux 系统中,守护进程的名称通常以字母
d结尾。http(Web服务) ->httpdssh(远程连接) ->sshdcron(计划任务) ->crondmysql(数据库) ->mysqld
3. 主要特征
- 后台运行: 没有图形界面,也不占用命令行窗口。
- 独立于终端: 普通进程(如你打开的 Word 或运行的 Python 脚本)通常与启动它的终端绑定,终端关闭,进程就结束了。但守护进程与终端脱离,终端关闭后它依然存活。
- 生命周期长: 通常在系统启动(Boot)时自动启动,直到系统关闭(Shutdown)时才停止。
- 父进程: 守护进程的父进程通常是
init进程(PID 为 1)或现代 Linux 中的systemd。这是因为它们在启动时会“过继”给系统根进程,以确保独立性。
4. 守护进程是干什么的?
它们通常负责系统级的任务或提供网络服务。常见的用途包括:
- 网络监听: 等待外部连接请求(如 Web 服务器
nginx、apache,邮件服务器postfix)。 - 系统维护: 记录日志(
syslogd)、管理打印任务(cupsd)。 - 定时任务: 定期执行脚本或命令(
crond)。 - 硬件管理: 管理设备驱动或硬件状态。
5. 不同操作系统中的称呼
虽然概念相同,但在不同系统中叫法略有不同:
- Unix / Linux / macOS: 称为 Daemon(守护进程)。
- Windows: 称为 Service(服务)。你可以在“任务管理器”或“服务(services.msc)”中看到它们。
- Android: 也有 Service 的概念,用于后台播放音乐或下载文件。
6. 如何管理守护进程(以 Linux 为例)
在现代 Linux 发行版(如 Ubuntu, CentOS 7+)中,通常使用 systemd 来管理守护进程。
- 启动服务:
systemctl start nginx - 停止服务:
systemctl stop nginx - 开机自启:
systemctl enable nginx - 查看状态:
systemctl status nginx
总结
守护进程就像是大楼里的电力系统、安保系统或清洁工。你平时感觉不到它们的存在(后台运行),不需要直接指挥它们(无交互),但它们一旦停止工作,大楼(操作系统)的功能就会瘫痪或变得混乱。