如何在没有ps命令的情况下在linux系统中打印所有进程id

WB *_*Lee 16 linux shell command ps

我想获得所有进程ID(pid),但要求是不使用ps命令.谢谢!

喜欢:$ ps aux

这是一项作业要求.我搜索了互联网但没有结果匹配它.谢谢!

spu*_*ume 42

根据 @FelixJongleur42 的评论,该命令

ls -l /proc/*/exe
Run Code Online (Sandbox Code Playgroud)

生成可解析的输出,其中包含进程用户、开始时间和命令等附加信息。


Iva*_*van 27

这一行将为您提供 pid 和带参数的 cmd:

for prc in /proc/*/cmdline; { (printf "$prc "; cat -A "$prc") | sed 's/\^@/ /g;s|/proc/||;s|/cmdline||'; echo; }
Run Code Online (Sandbox Code Playgroud)


gle*_*man 16

在Linux上,所有正在运行的进程都将"元数据"存储在/ proc文件系统中.

所有正在运行的进程ID:

shopt -s extglob # assuming bash
(cd /proc && echo +([0-9]))
Run Code Online (Sandbox Code Playgroud)

  • 为什么这个问题还不清楚呢?正如即时回答所证明的,这个问题似乎很清楚。我们可以重新提出这个问题吗? (3认同)
  • echo +([0-9]) 是什么意思。谢谢! (2认同)
  • 尝试`for exe in /proc/*/exe; 执行 ls -l $exe; 完成` (2认同)
  • 要同时显示启动进程的命令行,请在自己的行上执行“shopt -s extglob”后,尝试:“for exe in /proc/+([0-9])/exe; 执行 ls -l $exe; echo "带有参数的命令行:"; tr '\0' '\n' < $(dirname $exe)/cmdline; echo -e '\n'; 完成` (2认同)