02-概述
37.1 概述
daemon是一种具备下列特征的进程。
- 它的生命周期很长。通常,一个daemon会在系统启动的时候被创建并一直运行直至系统被关闭。
- 它在后台运行并且不拥有控制终端。控制终端的缺失确保了内核永远不会为daemon自动生成任何任务控制信号以及终端相关的信号(如SIGINT、SIGTSTP和SIGHUP)。
daemon是用来执行特殊任务的,如下面的示例所示。
- cron:一个在规定时间执行命令的daemon。
- sshd:安全shell daemon,允许在远程主机上使用一个安全的通信协议登录系统。
- httpd:HTTP服务器daemon(Apache),它用于服务Web页面。
- inetd:Internet超级服务器daemon(参见60.5节),它监听从指定的TCP/IP端口上进入的网络连接并启动相应的服务器程序来处理这些连接。
很多标准的daemon会作为特权进程运行(即有效用户ID为0),因此在编写daemon程序时应该遵循第38章中给出的指南。
通常会将daemon程序的名称以字母d结尾(但并不是所有人都遵循这个惯例)。
在Linux上,特定的daemon会作为内核线程运行。实现此类daemon的代码是内核的一部分,它们通常在系统启动的时候被创建。当使用ps(1)列出线程时,这些daemon的名称会用方括号([])括起来。其中一个内核线程是pdflush,它会定期将脏页面(即高速缓冲区中的页面)写入磁盘。