我想获得最后/最新的进程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)"