Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1680124
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-05-14 12:42:55



让我们看看一个普遍的系统守护进程和它们如何和进程组、控制终端、和会话(第9章)的概念关联,ps命令打印系统的各种进程的状态。有许多选项-- 参考你系统手册。我们将执行ps -axj,在基于BSD的系统下来看我们讨论所需的信息。-a选项显示被其它人拥有的进程,而-x显示没有控制终端的进程。-j选项显示工作相关的信息: 会话ID,进程组ID,控制终端,和终端进程组ID。在基于系统V的系统下,类似的命令是ps -efjc。(为了提升安全性,一些UNIX系统不允许我们使用ps来看不属于我们的任何进程。)ps的输出如:


PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    0     1     1     1 ?           -1 Ss       0   0:00 /sbin/init
    0     2     0     0 ?           -1 S        0   0:00 [kthreadd]
    2     3     0     0 ?           -1 S        0   0:00 [ksoftirqd/0]
    2     6     0     0 ?           -1 S        0   0:00 [migration/0]
    2     7     0     0 ?           -1 S        0   0:00 [migration/1]
    2     9     0     0 ?           -1 S        0   0:00 [ksoftirqd/1]
    2    11     0     0 ?           -1 S<       0   0:00 [cpuset]
    2    12     0     0 ?           -1 S<       0   0:00 [khelper]
    2    13     0     0 ?           -1 S<       0   0:00 [netns]
    2    15     0     0 ?           -1 S        0   0:00 [sync_supers]


我们感兴趣的列为父进程ID、进程ID、进程组ID、会话ID,终端名终端组ID(与控制终端相关的前台进程组),用户ID,和命令字符串。


运行这个ps命令的系统(Linux)支持一个会话ID的符号,我们在9.5节和setsid函数一起提到过。会话ID只是简单地为会话领导的进程ID。然而,基于BSD的系统将会打印session结构体的地址对应于这个进程所属的进程组(9.11节)。


你 看到的系统进程将取决于操作系统实现。任何父进程ID为0的进程通常是一个内核进程,作为系统启动过程的一部分。(一个例外是init,它是在系统启动时 由内核启动的用户级命令。)内核进程是特殊的,通常存在于系统的整个生命周期。它们以超级用户权限运行,并没有控制终端也没有命令行。


进程1通常是init,如我们在8.2节描述的。它是一个守护进程,负责在其它东西之间启动特定运行等级的系统服务。这些服务通常在它们自己的守护进程的帮助下实现。


在 Linux上,keventd守护进程为运行内核里的调度的函数提供进程上下文。kapmd守护进程提供了高级的电源管理特性的支持,在各种计算机系统上 可用。kswapd守护进程也被称为页出(page out)守护进程。它通过不时地缓慢地把脏页写到磁盘里来支持虚拟内存子系统,所以页可以被回收。


Linux内核使用两个额外的守护进程来把缓存的数据冲洗到磁盘:bdflush和kupdated。bdflush守护进程把脏缓冲从缓冲缓存冲洗回磁盘,当可用内存到达一个低水位标记。kupdated守护进程在定期把脏页冲洗回磁盘来减少系统失败事件的数据丢失。


端 口映射守护进程,portmap,提供了把RPC(Remote Procedure Call,远程过程调用)程序号映射到网络端口号。syslogd守护进程对任意程序可用,为一个操作记录系统消息。消息可能被打印到一个控制台设备或写 到一个文件。(syslog,13.4节)


我们9.3节说过inet守护进程。它监听系统的网络接口,等待对各种网络服务器的请求。nfsd、lockd、和rpciod守护进程提供了Network File System(NFS)的支持。


cron守护进程(crond)在指定的日期和时间执行命令。许多系统管理任务被cron定期执行的程序处理。cupsd守护进程是一个打印假脱机程序(sppler);它处理系统上的打印请求。


注 意多数守护进程用超级用户权限运行(用户ID为0)。没有一个守护进程有控制终端:终端名被设为一个问号,以及终端前台进程组为-1。内核守护进程不带控 制终端被启动。用户级守护进程的控制终端的缺失,很可能是守护进程调用了setsid的结果。所有用户组守护进程都是进程组长和会话领导,也是它们进程组 和会话里的唯一进程。最后,注意这些守护进程里多数的父进程是init进程。

阅读(258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~