我想在 linux 中获取最后一个/最新的进程 pid。任何人都可以建议我找到它的命令吗?但我不知道哪个进程最后开始了。
问问题
13556 次
3 回答
6
如果你想要最近执行的后台命令的进程 ID,你可以使用 ! 多变的。例如:
> gvim text.txt &
> echo $!
2842
于 2012-09-25T06:16:29.033 回答
6
更新:感谢 William 提供有关 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] 第四行,因为我的命令行中有三个管道命令。
于 2012-09-24T10:06:40.487 回答
2
获取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)"
于 2016-01-22T15:44:22.570 回答