守护进程(daemon)
是在后台运行且不与任何控制终端关联的进程。因为它们通常由系统初始化脚本启动。
守护进程有多种启动方式:
1、由系统初始化脚本启动。 如inetd, Web
2、由inetd超级服务器启动。
inetd监听网络请求,当有一个请求到达时,启动相应的实际服务器(Telnet, FTP等)
3、cron守护进程按照规则定期执行一些程序。这些程序也作为daemon运行。
4、at命令,指定将来的某个时刻执行。
5、用户终端启动。
因为daemon没有控制终端,所以当有事发生时它们得有输出消息的某种方法。
syslog函数就是输出这些信息的标准方法。它把信息发送给syslog守护进程。
syslogd 守护进程
它在启动时的执行步骤:
1、读取配置文件 /etc/syslog.conf
该文件指定本守护进程可能收集的各种日志消息(log message)应该如何处理。
这些消息可能被添加到一个文件; 或被写到指定用户的登录窗口; 或被转发到另一个主机上的syslogd进程。
2、创建一个Unix域数据报套接字,给它绑定路径名/var/run/log (某些系统是/dev/log)
3、创建一个UDP套接字,给它绑定端口514 (syslog服务使用的端口号)
4、打开路径名/deb/klog。 来自内核中的任何出错消息
然后syslogd进入无限循环。调用select等待3个描述符之一变成可读,并按照配置文件进行处理。如果守护进程收到SIGHUP,那就重新读取配置文件。
我们自己写daemon时,可以创建一个Unix域套接字,绑定与syslogd相同的路径名,就可以发送我们的消息给syslogd了。
但是更简单的接口是使用syslog函数。
此外,也可以创建一个UDP套接字,把消息发送到 localhost:514 即可送到。
syslog函数
daemon函数: 将当前程序与控制终端脱离,在后台作为守护进程运行。
inet