4

我想在 linux 中获取最后一个/最新的进程 pid。任何人都可以建议我找到它的命令吗?但我不知道哪个进程最后开始了。

4

3 回答 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 回答