Linux シェル,指定したプロセスIDが存在するのかを確認する

スポンサーリンク

鍛錬 687

Linux シェルスクリプト,指定したプロセスIDが存在するのかを確認する

指定したプロセスID(PID)が存在するのかを確認するには、kill を使用します。
 
使用方法は、以下に示す通りです。

kill -0 プロセスID

オプション

以下は、上記のオプションについてです。

オプション 機能
-0 指定したプロセスID(PID)の存在を確認する

戻り値

以下は、戻り値についてです。

戻り値
プロセスID(PID)が存在する場合 0
スポンサーリンク

シェルスクリプト

以下は、指定したプロセスID(PID)の存在を確認するシェルスクリプト、exist_check.sh です。

今回は、シェルスクリプト実行時のコマンドライン引数で指定された、プロセスID(PID)を取得して存在を確認します。

#!/bin/sh

# 引数(PID)を格納
pid_num=$1
echo "確認するPID = $pid_num"

while true
do
	# PIDが存在しない場合
	if ! kill -0 $pid_num > /dev/null 2>&1; then
		echo "-------------------------"
		echo "PID $pid_num は存在しない"
		echo "-------------------------"
		break
	fi
	
	echo "PID $pid_num は存在する"
	
	sleep 1s
done
スポンサーリンク

実行結果

以下は、プロセスID(PID)の取得対象となるシェルスクリプト、sleep_30s.sh です。

30 秒間スリープするだけのシェルスクリプトとなっています。

#!/bin/sh

# 30秒間スリープ
sleep 30s

 
以下は、シェルスクリプト sleep_30s.sh をバックグラウンドで実行してプロセスID(PID)を確認後、シェルスクリプト exist_check.sh を実行してプロセスID(PID)の存在を確認しています。

(sleep_30s.sh はバックグラウンドで実行して30秒後に終了します。)

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./sleep_30s.sh &
[1] 23653
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ echo $!
23653
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./exist_check.sh 23653
確認するPID = 23653
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
PID 23653 は存在する
-------------------------
PID 23653 は存在しない
-------------------------
[1]+  終了                  ./sleep_30s.sh

 
上記に示した通り、指定したプロセスID(PID)の存在を確認することができました。

タイトルとURLをコピーしました