如何通过管道获取进程ID,名称或状态

问题描述:

我可以在以下命令中获得进程ID为ls -al吗?如何通过管道获取进程ID,名称或状态

$ ls -al | echo [I want get process id of left command]

感谢

+0

你可能不能。顺便说一句,如果左边的命令是shell内建的呢? –

这可以做到通过一个文件

{ ls -al & echo $! > pid;} | { echo $(<pid);} 

也许有一个竞争条件

随着FIFO

mkfifo /tmp/fifo 
{ sleep 5 & echo $! >/tmp/fifo;} | { pid=$(</tmp/fifo); echo $pid; ps -p $pid;} 
rm /tmp/fifo