APUE读书笔记-13守护进程(1)

1、简介

守护进程一般是运行时间特别长的进程,它们一般在系统启动的时候运行,在系统关闭的时候终止。因为它们都没有控制终端,所以它们一般都在后台运行。Unix下面有许多的守护进程,用来执行一些日常的行为。

这一章我们来看一下守护进程的结构,以及如何写一个守护进程,由于守护进程没有控制终端,所以我们需要查看一下守护进程如何在发生错误的时候报告错误的情况。

译者注

原文参考

参考: APUE2/ch13lev1sec1.html

2、守护进程的特点

我们首先来看一下普通的系统守护进程以及它们和前面我们讲到的进程组,控制终端,以及session(会话)之间的关系。我们使用如下的方式运行ps命令:

$ps -axj

此命令运行在基于BSD的系统上面,可以查看我们关心的信息。-a选项会显示其它人拥有的进程的状态,-x选项显示没有控制终端的进程,-j选项显示作业相关的信息:会话ID,进程组ID,控制终端,和终端进程组ID.在基于system V的系统上面,类似的命令是ps -efjc,在有的Unix系统上面,出于对安全性的考虑,不允许我们查看不属于我们的进程。这个命令输出得信息类似如下:

PPID   PID  PGID   SID  TTY  TPGID  UID  COMMAND
   0     1     0     0  ?       -1    0  init
   1     2     1     1  ?       -1    0  [keventd]
   1     3     1     1  ?       -1    0  [kapmd]
   0     5     1     1  ?       -1    0  [kswapd]
   0     6     1     1  ?       -1    0  [bdflush]
   0     7     1     1  ?       -1    0  [kupdated]
   1  1009  1009  1009  ?       -1   32  portmap
   1  1048  1048  1048  ?       -1    0  syslogd -m 0
   1  1335  1335  1335  ?       -1    0  xinetd -pidfile /var/run/xinetd.pid
   1  1403     1     1  ?       -1    0  [nfsd]
   1  1405     1     1  ?       -1    0  [lockd]
1405  1406     1     1  ?       -1    0  [rpciod]
   1  1853  1853  1853  ?       -1    0  crond
   1  2182  2182  2182  ?       -1    0  /usr/sbin/cupsd

我们将实际输出中我们不关心的列给去掉了,这里的每一列,依次是:PPID-父进程ID,PID-进程ID,PGID-进程组ID,SID-会话ID,TTY-终端名称,TPGID-终端进程组ID(和控制终端相关的前台进程组),UID-用户ID和COMMAND-命令行。

在这个系统中(ps运行在Linux上面),支持会话ID的概念。实际我们前面已经说过,这个就是session leader的进程ID。然而在基于BSD相关的系统上,将会打印出相应进程所属的进程组相关的session的数据结构地址。

你的操作系统实现决定了你能够看到哪些系统进程。父进程id为0的进程一般都是做为系统启动一部分的内核进程(init程序是一个例外,因为它是内核在启动阶段启动的一个用户命令)。内核进程是比较特殊的,它一般在整个系统的生命周期中都存在着它以超级用户权限运行,没有命令行,没有控制终端.

进程ID为1的进程一般为init进程,我们前面也说过了它。这个进程是一个系统的守护进程,它特别用来启动各种级别的系统服务。这些服务通常通过它们自己的守护进程来实现。

在linux中,keventd守护进程为在kernel中运行调度函数提供进程上下文。kapmd守护进程提供许多计算机系统中通用的高级电源管理特性的支持。kswapd守护进程也被称作pageout守护进程,它通过(随着时间的流逝)向硬盘慢慢地写入脏页,以便回收这些页,来支持虚拟内存子系统。

Linux内核通过两个额外的守护进程来把缓存中的数据刷新到硬盘中,bdflush和kupdated.bdflush守护进程在可用内存的数目低到一定程度的时候,将“脏”缓存中的数据刷回到硬盘上面;而kupdated守护进程是在一定的时间间隔就会将“脏”缓存中的数据刷回到磁盘,防止系统崩溃引起的数据丢失。

portmaper守护进程(portmap),提供将远程调用程序号映射成网络端口号码的服务。syslogd守护进程可以让任何程序记录某一个操作的消息日志信息,这些消息可以被打印到终端上面,也可以写到一个文件中去(我们后面会讲到)。

我们讨论过inetd(xinetd)守护进程,它在系统的网络接口上面侦听来自各种网络服务的请求.nfsd,lockd,和rpciod守护进程提供网络文件系统(NFS)的支持。

cron守护进程(crond)用来在指定的时间和地点执行特定的命令,许多系统管理任务都是通过cron定期执行某些程序来实现的。cupsd守护进程是打印池,用来相应系统上面的打印请求。

我们要注意:大多数守护进程都是以超级用户(用户ID为0)的权限运行的。所有的守护进程都没有控制终端,所以ps中其控制中断的名称被设置成问号(?),并且其终端前台进程组号为-1(参考资料中说是1应该是写错了)。内核守护进程启动的时候就没有控制终端,而用户级别的守护进程一般都是因为调用了setsid导致它们和控制终端的连接断开的。所有的用户级别的守护进程都是组leader厌session leader,并且他们都是自己组或者会话中的唯一进程。最后,我们需要注意大多数这些守护进程的父进程都是init进程。

译者注

原文参考

参考: APUE2/ch13lev1sec2.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270