UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器

守护进程(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

UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器_第1张图片


UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器_第2张图片


UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器_第3张图片

你可能感兴趣的:(syslog)