linux 脚本 获取pid,Shell脚本中获取进程ID的方法
提問: 我想要知道運行中腳本子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
shell腳本中取消重定向的方法實例
在上一篇關于shell編程的例子中,有講到把shell腳本進行擴展之后重定向到一個文件中,以便進行查看和調試http://www.gimoo.net/article/62435.htm。但是,若是
Shell腳本之無限循環的兩種方法
for實現:#!/bin/bashseti=0setj=0for((i=0;i10;))dolet"j=j+1"echo"-------------jis$j-------------------"donewhile實現:#!/bin/bashsetj=2whiletruedolet"j=j+1"echo"----------jis$j--------------"done
shell腳本實現監控shell腳本的執行流程及變量的值
很多時候,我們都會寫shell程序來完成一些不用重復造輪子的時刻,但是,又因為shell語句中也會有函數,也會有變量,在運行后到底執行了哪些相關的
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux 脚本 获取pid,Shell脚本中获取进程ID的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 查看linux文件系统结构,如何查看Li
- 下一篇: linux用户登录实验,实验三 Linu