Shell指令碼中擷取進程ID的方法_linux shell

來源:互聯網
上載者:User

提問: 我想要知道運行中指令碼子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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.