我想要知道運行中腳本子shell的進程id。我該如何在shell腳本中獲得PID。linux
當我在執行shell腳本時,它會啓動一個叫子shell的進程。做爲主shell的子進程,子shell將shell腳本中的命令做爲批處理運行(所以稱爲「批處理進程」)。shell
在某些狀況下,你也許想要知道運行中的子shell的PID。這個PID信息能夠在不一樣的狀況下使用。好比,你可使用shell腳本的PID在/tmp下建立一個惟一的臨時文件。有時侯腳本須要檢測全部運行的進程,它能夠從進程列表中排除自身的子shell。bash
在bash中,子shell進程的PID存儲在一個特殊的變量‘$$’中。這個變量只讀,你不能夠在腳本中修改它。好比:運維
#!/bin/bashlinux運維
echo "PID of this script: $$"this
上面的腳本會獲得下面的輸出:spa
PID of this script: 6583.net
除了$$, bash shell還會導出其餘的只讀變量。好比,PPID存儲子shell父進程的ID(也就是主shell)。UID存儲了執行這個腳本的當前用戶ID。好比:視頻
#!/bin/bash教程
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $UID"
輸出是:
PID of this script: 6686
PPID of this script: 4656
UID of this script: 1000
上面輸出中,PID每次執行都會變化。這個由於每次運行都會建立一個新的shell。另外一方面,PPID每次都會同樣只要你在同一個shell中運行。
對於全部bash內置變量列表,參考man頁。
$ man bash
好了,教程就到這裏了,但願能給你們帶來幫助!
免費領取兄弟連IT教育原創linux運維工程師視頻/細說linux教程,詳情諮詢官網客服:http://www.lampbrother.net/linux/
或者勾搭Q2430675018
歡迎加入linux交流羣 478068715