还是在看disown的问题,发现就算是disown或者nohup了一个进程,他所属的pgid和sid也没有变化嘛,好谜,索性这里把ps命令的参数和输出都过一遍吧。

常用命令

ps命令支持三种使用的语法格式

  • UNIX 风格,选项可以组合在一起,并且选项前必须有“-”连字符
  • BSD 风格,选项可以组合在一起,但是选项前不能有“-”连字符
  • GNU 风格的长选项,选项前有两个“-”连字符
  • UNIX风格

    1
    2
    3
    4
    $ ps -e
    PID TTY TIME CMD
    1 ? 00:00:07 systemd
    2 ? 00:00:00 kthreadd

    这里 -e 相当于 -A 输出所有进程

    1
    2
    3
    4
    $ ps -ely
    S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
    S 0 1 0 0 80 0 1380 5737 - ? 00:00:07 systemd
    S 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

    1
    2
    3
    4
    5
    $ ps -ef
    UID PID PPID C STIME TTY TIME CMD
    root 1 0 0 Apr22 ? 00:00:07 /sbin/init
    root 2 0 0 Apr22 ? 00:00:00 [kthreadd]
    root 3 2 0 Apr22 ? 00:00:51 [ksoftirqd/0]

    -f 就是加了 UID PPID C STIME

    1
    2
    3
    4
    5
    $ ps -eF
    UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
    root 1 0 0 5737 1380 0 Apr22 ? 00:00:07 /sbin/init
    root 2 0 0 0 0 0 Apr22 ? 00:00:00 [kthreadd]
    root 3 2 0 0 0 0 Apr22 ? 00:00:51

    -F 加了更多,虽然不知道实际用到多少

    BSD风格

    a 是显示全部, ax 会显示没有终端的进程。

    1
    2
    3
    4
    $ ps ax
    PID TTY STAT TIME COMMAND
    1 ? Ss 0:07 /sbin/init
    2 ? S 0:00 [kthreadd]
    1
    2
    3
    4
    $ ps aux
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.1 22948 1380 ? Ss Apr22 0:07 /sbin/init
    root 2 0.0 0.0 0 0 ? S Apr22 0:00

    u 是Display user-oriented format. 就是加了 USER PID %CPU %MEM VSZ RSS STAT START 这些,还是很有用的。

    树结构

    ps axjf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ps axjf
    PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
    0 2 0 0 ? -1 S 0 0:00 [kthreadd]
    2 3 0 0 ? -1 S 0 0:52 \_ [ksoftirqd/0]
    2 5 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H]
    2 7 0 0 ? -1 S 0 0:46 \_ [rcu_sched]
    2 8 0 0 ? -1 S 0 0:00 \_ [rcu_bh]
    2 9 0 0 ? -1 S 0 1:38 \_ [rcuc/0]
    2 10 0 0 ? -1 S 0 0:00 \_ [migration/0]
    2 11 0 0 ? -1 S 0 0:00 \_ [cpuhp/0]

    j 是BSD job control输出, f 是树状输出

    参数解释

    -ely 来的