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

Linux 在前台启动进程时,在Shell脚本中获取进程ID,linux,shell,Linux,Shell,在一个shell程序中,我想启动一个程序,获取它的PID并保存在一个临时文件中。但是在这里,我将在前台启动程序,并且在进程处于运行状态之前不会退出shell 例: 这很好,我可以得到启动过程的pid。但是如果我在前台启动程序,我想知道如何获得pid 例: 您不能这样做,因为您的shell脚本没有运行——您刚才在前台启动的命令是。正如我在上面所评论的,因为您的命令仍在前台运行,所以您不能在同一shell中输入新命令并转到下一行 但是,当此命令正在运行且您希望从不同的shell选项卡/窗口进程获取此

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

例:

这很好,我可以得到启动过程的pid。但是如果我在前台启动程序,我想知道如何获得pid

例:


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

正如我在上面所评论的,因为您的命令仍在前台运行,所以您不能在同一shell中输入新命令并转到下一行

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

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

编辑:根据您的评论
或者是否可以在后台启动程序并获取进程ID,然后等待脚本,直到该进程退出?

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

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

如果您的程序在前台运行,那么您将如何转到下一行?或者是否可以在后台启动程序并获取进程ID,然后等待脚本直到该进程退出?是的,可以完成,请参阅下面我编辑的答案。
pgrep -f "myprogram"
17113 # this # will be different for you :P
myprogram &
mypid=$!
# do some other stuff and then
wait $mypid