2011-11-16 88 views
1

當我運行bash腳本時,我在ps列表中獲取兩個條目,其中一個是其他子項。 我的腳本只包含一個命令Bash腳本運行兩個pid

test.sh 
    sleep 20 

pidof test.sh 
2494 2493 

我怎樣才能得到父PID

回答

2

當你運行該腳本,正在創建兩個過程。第一個是運行腳本的bash解釋器。 sleep另一方面是另一個二進制文件(通常在/ bin中),因此需要啓動一個新進程。 (儘管進程命名似乎在不同的系統上有所不同;當在我的測試系統上運行時,沒有一個進程被test.sh命名,只是bash和sleep)。

獲取父進程ID爲一個或多個進程(通過ID或名字),你可以使用ps

$ ps -p 6194 -o ppid= 
6187 

$ ps -p 6194,6748 -o ppid= 
6187 
6747 

$ ps -C bash -o ppid= 
6187 
6747 
6782 
1

在一個CentOS系統「的pidof」只返回父進程。要獲得孩子(ren),您可以使用'pstree':

$ pidof test.sh 
22220 
$ pstree -p 22220 
mytest(22220)---sleep(22223)