在正在运行的进程的变量中捕获Linux进程ID

时间:2015-02-26 16:19:51

标签: linux bash

当我在启动进程的Linux脚本中运行命令时,我想在变量中捕获该命令的进程号以供以后使用(即稍后将其删除)。

这是启动流程的命令

./run external

会是这样的:

./run external/ pid=$!?

手动我做:ps -ef|grep run,它给了我一个进程ID然后我可以手动杀死它但我想在一个变量中捕获脚本中的PID,所以我可以说:kill $variable(其中包含PID值。)

想法?

2 个答案:

答案 0 :(得分:1)

在后台运行的任务的PID为$!

$ sleep 30 &
[1] 21493
$ echo $!
21493
$ ps -ef | grep sleep
dbj      21493 21414  0 11:42 pts/26   00:00:00 sleep 30

所以你应该能够捕获该值并在以后杀死该PID。

答案 1 :(得分:0)

您可以扩展手动方法以使其自动运行:

pid=$(ps -ef | grep run | grep -v grep | awk '{print $2}')