5

在一个 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
4

2 回答 2

12

正如我在上面评论的那样,由于您的命令仍在前台运行,因此您无法在同一个 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
于 2013-08-30T14:55:58.930 回答
0

你不能这样做,因为你的 shell 脚本没有运行——你刚刚在前台启动的命令是。

于 2013-08-30T14:51:58.293 回答