怠日記

写真・金魚・昆虫・プログラミングの趣味を語るサイトです。似たようなことをnoteにも書いたり書いてなかったり。

csh - 常駐シェルスクリプト

特定の処理を監視するため、シェルスクリプトを常駐させることになった。

常駐処理は無限ループと待機の組み合わせで実現できる。

まず while コマンドに真(0 以外)を指定して無限ループにする。
ループ内に常駐処理を書く。
その処理が終わったら sleep コマンドで一定時間待機する。

これでスクリプトを終わらせない限り、一定時間毎に処理させるようにできる。




サンプル

次のシェルスクリプトは、5分毎に処理を実行する。

#!/bin/csh

while (1)
    # 処理実行
    # TODO: ここにループで実行する処理を書く

    # 5分待機
    sleep 300
end



常駐シェルスクリプトの止め方

常駐シェルスクリプトは明示的に処理を止めるまでずっと動き続ける。

シェルスクリプトを停止するには、kill コマンドでプロセスを終了させる。

まずは ps コマンドで PID を取得する。
ps コマンドには -o オプションで表示形式を指定しておいたほうが見やすい。
プロセスID、コマンド、引数を出力 → ps -o pid,comm,args

それから kill -KILL 〈PID〉 でプロセスを終わらせる。