Shell:进程的层级关系

时间:2021-06-29 06:11:50

[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