Linux守护进程详解:特性与启动方法

需积分: 34 3 下载量 53 浏览量 更新于2024-08-25 收藏 970KB PPT 举报
"守护进程是操作系统中的一种特殊进程,通常在后台运行,不与任何终端绑定,用于执行特定的系统或服务管理任务。它们的特点包括后台运行、与运行环境隔离以及特殊的启动方式。 守护进程的主要特性: 1. **后台运行**:守护进程不依赖于终端,即使终端关闭,它也能继续运行。 2. **环境隔离**:守护进程会脱离与终端、会话、进程组、工作目录和文件创建掩模等的关联,以防止受到用户交互或环境变化的影响。 3. **特殊启动**:通常,守护进程在系统初始化阶段由启动脚本(如/etc/rc.d下的脚本)或超级服务器(如inetd)启动,也可以通过其他守护进程如cron按计划启动。 守护进程的运行环境: - 文件描述符:守护进程会关闭不必要的文件描述符,避免与父进程共享文件状态。 - 控制终端:守护进程会失去与登录终端的关联,避免受到终端操作的影响。 - 会话和进程组:通过调用`setsid`系统调用,守护进程可以创建新的会话并成为新的会话组长,从而独立于父进程的会话。 - 工作目录:通常会更改为根目录(/),以减少对特定工作目录的依赖。 - 文件创建掩模(umask):可能被调整以适应特定的安全策略。 守护进程的启动方法: 1. **系统初始化脚本**:在系统启动时,许多守护进程由/etc目录下的初始化脚本启动。 2. **inetd超级服务器**:一些网络服务由inetd启动,inetd自身也是由初始化脚本启动的。 3. **cron守护进程**:用于定期执行任务,启动的程序同样以守护进程方式运行。 4. **用户终端**:虽然不常见,但守护进程也可以在用户终端上启动,然后转为后台运行。 守护进程的消息处理: 由于没有控制终端,守护进程通常使用`syslog`函数将消息发送给syslog守护进程,以便记录和报告状态,包括普通通告和紧急事件。 **会话期和进程组**: - 进程组:每个进程都属于一个进程组,进程组号是组长进程的PID。 - 会话期:登录会话可以包含多个进程组,会话期有一个控制终端和一个控制进程。 - 控制终端:当终端断开连接时,会发送SIGUP信号给控制进程。 `setsid`系统调用在创建守护进程中起到关键作用,它创建新的会话,使得守护进程成为新会话的首进程,进一步确保了与原有环境的隔离。 总结来说,守护进程是系统中不可或缺的一部分,它们在后台默默地执行任务,维持系统的正常运行,而它们的启动、运行和通信机制则体现了操作系统对后台服务管理的精细设计。"