我想在Linux中获取最后一个/最新的进程pid。有人能建议我找到这个命令吗?但是我不知道哪个进程是最后启动的。
更新:感谢William提供的awk提示。
前置条件:进程仍在运行中。
我不是UNIX专家,但我考虑了以下方法:
ps aux --sort +start_time | tail -n 4 | awk 'NR==1{print $2}'
ps
命令将列出所有进程,我们将按照启动时间进行排序。然后,我们将获取输出的倒数第四行 [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 ~ %
head
命令,可以使用 awk 'NR==1{...}
命令。 - William Pursellps aux --sort +start_time | tail -n 14 | head -n 10 | awk '{print $2}'
- meisterluk > gvim text.txt &
> echo $!
2842
获取 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)"