HDS AMS 2500用户手册
13.2 精灵进程的特征
先来察看一些常用的系统精灵进程,以及它们怎样和第9章中所叙述的概念:进程组、控制终端和对话期相关联。你知道吗?使用 ps
命令就可以打印系统中各个进程的状态。这个命令有多个选择项,有关细节请参考系统手册。
为了察看本节讨论中所需的信息,在 4.3+BSD 或 SunOS 系统下执行:ps -axj
。选择项 -a
显示由其他用户所拥有的进程的状态,-x
显示没有控制终端的进程的状态,而 -j
显示与作业有关的信息:对话期 ID、进程组 ID、控制终端以及终端进程组 ID。
在 SVR4 之下,与此相类似的命令是 ps -efjc
。在某些符合美国国防部安全性准则要求的 UNIX 系统中,只能使用 ps
查看自己所拥有的进程。更多关于 ps
命令的细节,可以查阅这篇文章。
ps
的输出大致是:
PPID PGID SID TTTGID UID COMMAND
0 0 ? -1 0 swapper
1 0 ? -1 0 /sbin/init --
2 0 ? -1 0 pagedaemon
180 ? -1 0 syslogd
188 ? -1 0 /usr/lib/sendmail -bd -q1h
10537 ? -1 0 update
1108 ? -1 0 cron
1114 ? -1 0 inetd
1117 ? -1 0 /usr/lib/lpd
已移去了一些我们并无兴趣的列,例如累计 CPU 时间。按照顺序,各列标题的意义是:父进程 ID、进程组 ID、终端名称、终端进程组 ID(与该控制终端相关的前台进程组)、用户 ID 以及实际命令字符串。是不是有点复杂?别担心,看看这篇关于进程管理的文章,它能帮你更好地理解这些概念。
这些 ps
命令在支持对话期 ID 的系统(如 SunOS)上运行时,9.5 节的 setsid
函数中曾提及对话期 ID。它是对话期首进程的进程 ID。不过,4.3+BSD 系统将打印与本进程所属进程组对应的 session 结构的地址(见 9.11 节)。对于精灵进程的详细解释,请参考UNIX环境高级编程。
进程 0、1 以及 2 是 8.2 节中所述的进程。这些进程非常特殊,存在于系统的整个生命期中。它们没有父进程 ID,没有组进程 ID,也没有对话期 ID。syslogd 精灵进程可用于任何为操作人提供日志服务的系统,了解更多关于精灵进程的信息,可以访问这里。
现在,你是否对这些系统精灵进程的运作有了更深入的了解呢?让我们继续探索吧!