在前台启动进程时,在Shell脚本中获取进程ID

时间:2013-08-30 14:41:36

标签: linux shell

在shell程序中,我想启动一个程序并获取其PID并保存在临时文件中。但是在这里我将在前台启动程序,并且在进程处于运行状态之前不会退出shell

例如:

 #!/bin/bash

 myprogram &
 echo "$!"  > /tmp/pid

这项工作正常我能够获得已启动流程的pid。但如果我在前期启动该程序,我想知道如何获得pid

前:

#!/bin/bash

myprogram       /// hear some how i wan to know the PID before going to next line

2 个答案:

答案 0 :(得分:10)

正如我上面评论的那样,因为你的命令仍然在前台运行,你不能在同一个shell中输入一个新命令并转到下一行。

但是,当此命令正在运行并且您想要从不同的shell选项卡/窗口进程获取此程序的进程ID时,请使用pgrep,如下所示:

pgrep -f "myprogram"
17113 # this # will be different for you :P

编辑:根据您的评论or is it possible to launch the program in background and get the process ID and then wait the script till that process gets exited ?

是的,可以使用wait pid命令完成,如下所示:

myprogram &
mypid=$!
# do some other stuff and then
wait $mypid

答案 1 :(得分:0)

由于您的shell脚本未运行,您无法执行此操作 - 您刚刚在前台启动的命令是。