首页 > 代码库 > Shell:进程的层级关系
Shell:进程的层级关系
[luwenwei@appdev115 ~]$ ps -ef | grep init
root 1 0 0 Apr24 ? 00:08:25 init [3]
[luwenwei@appdev115 ~]$ ps -ef | head -n 1
UID PID PPID C STIME TTY TIME CMD
第二三列分别是当前进程ID,父进程ID
P1:0号进程fork出1号root权限的init进程,1号(注:0号进程是系统启动的第一个进程,它是所有其它进程的祖先,进程成为孤儿进程后会被0号进程接管)
P2:1号进程fork出sshd的ssh登录进程,1994号
P3:1994号进程fork出个人[luwenwei]登录进程,11315
P4:11315号进程fork出ssh管理进程,11319,接管了所有的ssh登录终端窗口,这一步就是用户态了(用户名是luwenwei),之后的进程所有者就切换成luwenwei
P5:11319号进程fork出单个终端窗口,24106,当前的shell(bash)进程
关于新窗口:如果需要开新终端则需要向终端管理进程(11319)申请,11319会fork一个pts的bash进程
关于当前窗口:当前终端窗口号是13号,对应的bash号是24106
P6:当前的shell下运行php进程,24106号进程fork出1423号php进程
P7:php的程序中执行了sleep的命令(exec(‘sleep 5‘)),1423的php进程fork出1424号sleep进程
P1 root 1 0 0 Apr24 ? 00:08:25 init [3]
P2 root 1994 1 0 Apr24 ? 00:00:07 /usr/sbin/sshd
P3 root 11315 1994 0 10:17 ? 00:00:00 sshd: luwenwei [priv]
P4 luwenwei 11319 11315 0 10:17 ? 00:00:00 sshd: luwenwei@pts/2,pts/7,pts/13,pts/20
P5 luwenwei 24106 11319 0 10:56 pts/13 00:00:00 -bash
P6 luwenwei 1423 24106 1 11:25 pts/13 00:00:00 php a.php
P7 luwenwei 1424 1423 0 11:25 pts/13 00:00:00 sleep 5