我正在学习如何编写 unix/linux 命令。有什么方法可以使用 ps -ef 查看进程,但让命令在 root 时忽略所有者?
答案1
通过procps-ng
实施ps
(通常在非嵌入式 Linux 系统上找到),您可以删除该-e
选项并将其替换为-N -u root
向ps
您显示以除 root 之外的任何用户身份运行的进程:
ps -f -N -u root
您可以打包-f -N
在一起作为-Nf
或-fN
来缩短命令行(类似于打包-e -f
在一起的方式-ef
)
ps
本质上,您将指示选择每个进程的选项 ( ) 替换为指示仅选择以 root 用户身份运行的进程 ( )-e
的选项,并添加否定选项 ( ),因此选择除正在运行的进程之外的所有进程作为根。该选项可以获取用户列表,因此如果您想过滤掉根或守护进程,可以使用.ps
-u root
-N
ps
-u
ps -f -N -u root,daemon
手册ps
页根据选项的功能(简单进程选择、按列表选择进程、输出格式控制等)对选项进行分组,因此该-N
选项可用于否定/反转其他进程选择选项的操作。例如,ps -f -p 123
将仅选择进程 id 123
,但ps -f -N -p 123
将显示不是进程 id 的所有进程123
。