第13章守护进程
13.1 守护进程概念
在系统自举时启动,仅在系统关闭时终止。,由于没有控制终端,所以可以说是在后台运行
13.2 常见的守护进程
1)内核进程(pid=0)存在整个系统生命周期,超级用户特权运行,无控制终端,无命令行
2)init进程(pid=1)负责启动各运行层次特定的系统服务
3)keventd进程负责为内核中运行计划执行的函数提供进程上下文。
4)bdflush和kupdated进程将高速缓存中的数据冲洗到磁盘上
5)portmap进程RPC(远程过程调用)程序号映射为网络端口号的服务
6)inetd进程侦听系统网络接口,取得来自网络对各种网络服务进程的请求
7)cron进程在制定日期和时间执行制定的命令
13.3 编写守护进程的基本规则
1)调用umask将文件模式创建屏蔽字设置为0
2)调用fork,使父进程退出(exit)
3)调用setsid创建新的会话
4)将当前工作目录更改为根目录
5)关闭不在需要的文件描述符
6)某些守护进程打开/dev/null使其具有文件描述符0、1、2
13.4 出错记录(syslogd)
UNIX产生日志消息的三种方式:
1) 内核例程调用log函数
2) 守护进程调用syslog(3)函数产生日志消息
3) 主机用户进程或者通过TCVP/IP网络连接到此主机的其他主机上的一个用户进程将日志消息发送到UDP端口514
Syslog守护进程会读取这三种格式的日志信息,并在启动时加载配置文件/etc/syslog.conf
void openlog(const char *ident,intoption,int facility);
ident:指定加至每则日志消息中
option:指定位屏蔽
facility:可以让配置文件说明,来自不同设施的消息将以不同方式处理
void syslog(int priority,const char *format);//产生一个日志消息
priority:是facility和level的组合
format格式化出错消息字符串
setlogmask:设置记录优先级屏蔽字
13.5守护进程惯例
1)守护进程使用锁文件,文件放在/var/run
2)配置文件放在/etc
3)守护进程可用命令行启动
4)当守护进程启动时会读取配置文件,一旦修改配置文件,则守护进程需要被停止,然后重新启动