ps -ef | grep -E 'PID|init'
并为ps 输出的列ps -p 1
报告不同的字符串。为什么一个是,另一个是?我本来希望只看到。我正在运行 Ubuntu 18.04。CMD
systemd
/sbin/init
/sbin/init
user@host:~$ ps -ef | grep -E 'PID|init' --color=no
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:07 ? 00:00:13 /sbin/init splash
bag 22919 8273 0 19:52 pts/1 00:00:00 grep --color=auto -E PID|init --color=no
user@host:~$ ps -p 1
PID TTY TIME CMD
1 ? 00:00:13 systemd
答案1
有两个“CMD”字段:一个取自实际命令行,又名argv[0]
,另一个单独的字段名为comm
。
通常该comm
字段包含程序的文件名(最多 15 个字节),但 systemd 会故意覆盖该值,以便更容易确定哪个 init 系统当前处于活动状态。
在预定义输出中,两个字段具有相同的列名。但是,ps -p
常规时显示 comm 字段ps
,而常规时ps -f
显示 argv[] 或命令行。
(Linux“ps”是 BSD“ps”和 SysV“ps”的不正当组合——根据选项的组合,您可能会得到类似 SysV 的输出或类似 BSD 的输出或完全不同的东西。)