005. 複数プロセスの停止
前回の問題点の1つは、複数のプロセスがある場合などに対応していないということでした。
そこで、さっさと対応させてしまいましょう。 (^^)/
例4)複数対応
#!/usr/bin/ksh
ps -ef | grep プロセス名 | grep -v grep | while read PID dummy
do
kill ${PID}
done
ps の結果を while read で1行ずつ取ってきて PID の変数に プロセスIDが、
dummy に第2引数以下が順次代入されていきます。
PID には条件にあったものだけが代入されるため、前回のような if 文や
awk による第1引数のみとってくる必要はありません。
結構すっきりしてるでしょ?
プログラムの動作を試したい人は、ksh の後に -x をつけて、
kill の前に echo をつけると確認ができます。
#!/usr/bin/ksh -x
ps -ef | grep プロセス名 | grep -v grep | while read PID dummy
do
echo kill ${PID}
done
プログラムの動作を確認する時、あぶないコマンド(kill とか rm とか)の前に
echo をつけてから動作を確認すると安全です。
ただし、取り忘れないことが肝要です。
#!/usr/bin/ksh -x
DEBUG=echo
ps -ef | grep プロセス名 | grep -v grep | while read PID dummy
do
${DEBUG} kill ${PID}
done
としておいて、本番では DEBUG="" とするのも良いかもしれませんね。
...ではまた次回。
戻る
Last Updated: 2/9/2006
WebMaster: Satoshi Yamashina chihioizu@gmail.com