我试图获取进程的最后一个pid(例如sleep)。我这样做:
# sleep 10 &
[1] 14115
但是当我使用此命令获取最后一个pid:
# ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2 " " $11}'
14125 sleep
pid不一样,我不明白我做错了什么,因为如果我做同样但没有命令的最后一部分,我会得到相同的pid:
# sleep 10 &
[1] 15853
# ps aux --sort +start_time | tail -n 4
root 15853 0.0 0.1 3364 520 pts/2 S 16:45 0:00 sleep 10
www-data 15871 0.0 0.0 1864 452 ? S 16:45 0:00 sleep 1
root 15872 0.0 0.2 4344 1168 pts/2 R+ 16:45 0:00 ps aux --sort +start_time
root 15873 0.0 0.1 3756 676 pts/2 S+ 16:45 0:00 tail -n 4
提前致谢
[解决]
# ps aux --sort +start_time | tail -n 5 | awk 'NR==1{print $2 " " $11}'
具体过程的另一种解决方案
# pgrep -n 'name_of_the_process'
答案 0 :(得分:1)
awk
进程已启动,并占用输出中的另一行。试试tail -n 5
,但它不可靠,因为无论如何都可以在两者之间启动另一个过程。请参阅psgrep
。
答案 1 :(得分:0)
您可以通过以下方式获取上一个流程的pid: echo $!