2013-08-30 76 views
2

在一個shell程序中,我想啓動一個程序並獲取其PID並保存在臨時文件中。但在這裏,我會在前臺啓動該程序,直到進程處於運行狀態在前臺啓動進程時獲取Shell腳本中的進程ID

前不會退出shell:

而且這工作得很好,我能夠得到啓動的PID過程。但是,如果我在發動地面脫穎而出的節目,我想知道如何獲得PID

例如:

#!/bin/bash 

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

如果您的程序在前臺運行,那麼您將如何進入下一行? – anubhava

+0

或者是否有可能在後臺啓動程序並獲取進程ID,然後等待腳本直到該進程退出? –

+0

是的,可以完成,請參閱下面我編輯的答案。 – anubhava

回答

0

你不能這樣做,因爲你的shell腳本沒有運行 - 您的命令剛剛在前臺推出是。

8

正如我上面評論,因爲你的命令仍然在前臺運行,你不能在同一個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 
+0

@NaggappanRM:這是否適合你? – anubhava