还是在看disown的问题,发现就算是disown或者nohup了一个进程,他所属的pgid和sid也没有变化嘛,好谜,索性这里把ps命令的参数和输出都过一遍吧。
常用命令
ps命令支持三种使用的语法格式
- UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
- BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
- GNU 风格的长选项,选项前有两个“-”连字符
UNIX风格
|
|
这里-e
相当于-A
输出所有进程1234$ ps -elyS UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMDS 0 1 0 0 80 0 1380 5737 - ? 00:00:07 systemdS 0 2 0 0 80 0 0 0 - ? 00:00:00 kthreadd
l
会加上UID PID PPID C PRI NI ADDR SZ WCHAN
这些参数,y
是使用RSS
替换ADDR
|
|
-f
就是加了UID PPID C STIME
|
|
-F
加了更多,虽然不知道实际用到多少
BSD风格
a
是显示全部,ax
会显示没有终端的进程。
|
|
|
|
u
是Display user-oriented format. 就是加了USER PID %CPU %MEM VSZ RSS STAT START
这些,还是很有用的。
树结构
ps axjf
|
|
j
是BSD job control输出,f
是树状输出
参数解释
-ely
来的
- S 进程状态(比STAT短,没有>,+之类的)
- UID 执行者身份
- PID 进程ID
- PPID 父进程ID
- C CPU 使用的资源百分比
- PRI 指进程的执行优先权,其值越小越早被执行
- NI 这个进程的nice值,其表示进程可被执行的优先级的修正数值
- ADDR 这个是内核函数,指出该程序在内存的那个部分。如果是个执行的程序,一般就是
-
- RSS 该进程占用的固定的内存量 (Kbytes)
- SZ 使用掉的内存大小
- WCHAN 目前这个程序是否正在运作当中,若为 - 表示正在运作;
- TTY 登入者的终端机
j
来的
- PPID 父进程ID
- PID 进程ID
- PGID 进程组ID
- SID session ID
- TTY
- TPGID tty进程的id(zsh的id)
- STAT
日常
- ps j -C 进程名字
- ps j -s sessionID号
- ps -eLf 可以看到所有线程(LWP = TID, NLWP = 线程数)