如何在腳本中獲取進程ID(PID)


我想要知道運行中腳本子shell的進程id。我該如何在shell腳本中得到PID。

 

當我在執行shell腳本時,它會啟動一個叫子shell的進程。作為主shell的子進程,子shell將shell腳本中的命令作為批處理運行(因此稱為“批處理進程”)。

 

在某些情況下,你也許想要知道運行中的子shell的PID。這個PID信息可以在不同的情況下使用。比如,你可以使用shell腳本的PID在/tmp下創建一個唯一的臨時文件。有時侯腳本需要檢測所有運行的進程,它可以從進程列表中排除自身的子shell。

 

在bash中,子shell進程的PID存儲在一個特殊的變量‘$$’中。這個變量只讀,你不可以在腳本中修改它。比如:

#!/bin/bash

echo "PID of this script: $$"

 

上面的腳本會得到下面的輸出:

PID of this script: 6583

除了$$, 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.itxdl.cn/linux/

或者勾搭Q2430675018

歡迎加入linux交流群 478068715


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM