ゾンビ探しのスクリプト

ゾンビプロセスを表示するスクリプトを見つけたので試してみました。

#!/bin/bash
declare -a zombiepids
zombiepids=($(ps -eo pid,stat | grep 'Z' | sed 's/^ \{1,\}//g' | cut -d" " -f1))
if [ ${#zombiepids[*]} -gt 0 ]; then
  echo "ゾンビプロセスは ${#zombiepids[*]} 個です"
  ps -f -p ${zombiepids[*]}
fi

最初の$ はコマンド置換といって変数や引数にコマンドの結果を渡したいときに使われ、ここではps (プロセスの状態を取得する)コマンドで、Zの付くPIDを半角スペースを削除して、cutコマンドでPIDのみを、配列${zombiepids[*]}に格納しています。${#zombiepids[*]}で配列の要素数を表すのですね。sed がいまいちわかりません。また勉強ですね。

if文の -gt は比較演算子で真のときコマンドを実行します。

eq a=bのとき真
ne a≠bのとき真
lt a<bのとき真
gt a>bのとき真
le a≦bのとき真
ge a≧bのとき真

参考URL http://d.hatena.ne.jp/anmino/20100404/1270307084

UNIX/Linuxシェルスクリプトマスタリングハンドブック

http://shellscript.sunone.me/if_and_test.html

https://hydrocul.github.io/wiki/commands/cut.html

http://qiita.com/mashumashu/items/bbc3a79bc779fe8c4f99