首頁 > 軟體

Linux系統入門學習:如何在指令碼中獲取進程ID(PID)

2020-06-16 18:04:43

提問: 我想要知道執行中指令碼子shell的進程id。我該如何在shell指令碼中得到PID。

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

在某些情況下,你也許想要知道執行中的子shell的PID。這個PID資訊可以在不同的情況下使用。比如,你可以使用shell指令碼的PID在/tmp下建立一個唯一的臨時檔案。有時侯指令碼需要檢測所有執行的進程,它可以從進程列表中排除自身的子shell。

在bash中,子shell進程的PID儲存在一個特殊的變數‘$$’中。這個變數唯讀,你不可以在指令碼中修改它。比如:

  1. #!/bin/bash
  2.  
  3. echo "PID of this script: $$"

上面的指令碼會得到下面的輸出:

  1. PID of this script:6583

除了$$, bash shell還會匯出其他的唯讀變數。比如,PPID儲存子shell父進程的ID(也就是主shell)。UID儲存了執行這個指令碼的當前使用者ID。比如:

  1. #!/bin/bash
  2.  
  3. echo "PID of this script: $$"
  4. echo "PPID of this script: $PPID"
  5. echo "UID of this script: $UID"

輸出是:

  1. PID of this script:6686
  2. PPID of this script:4656
  3. UID of this script:1000

上面輸出中,PID每次執行都會變化。這個因為每次執行都會建立一個新的shell。另一方面,PPID每次都會一樣只要你在同一個shell中執行。

對於所有bash內建變數列表,參考man頁。

  1. $ man bash

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-03/114954.htm


IT145.com E-mail:sddin#qq.com