获取最后(最新)的进程PID在Linux中

我想获得最后/最新的进程PID在Linux.Can任何人都可以build议我find的命令? 但是我不知道哪个过程最后开始了。

如果你想要最近执行的后台命令的进程ID,你可以使用! 变量。 例如:

> gvim text.txt & > echo $! 2842 

更新:感谢威廉关于awk的暗示。
先决条件:该过程仍在运行。

我不是UNIX专家,但我想到了以下方法:

 ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2}' 

ps将列出所有进程,我们将按start_time对它们进行排序。 之后,我们将从输出的最后一行[0]中取第四个,awk将返回在第二个字段中找到的pid。

 root@unix ~ % sleep 10 & [1] 3009 root@unix ~ % ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2 " " $11}' 3009 sleep root@unix ~ % 

[0]第四行是因为我的命令行中有三个管道命令。

获取PID

 #!/bin/bash my-app & echo $! 

PID保存在变量中:

 #!/bin/bash my-app & export APP_PID=$! 

保存文本文件中的所有实例PID

 #!/bin/bash my-app & echo $! >>/tmp/my-app.pid 

将输出,错误和PID保存在分离的文件中:

 #!/bin/bash my-app >/tmp/my-app.log 2>/tmp/my-app.error.log & echo $! >>/tmp/my-app.pid echo "my-app PID's: $(cat /tmp/my-app.pid)"