FreeBSD
ベアボーン端末専用システムがあります。私はzpool status
これを15秒ごとに監視したいと思います。通常、「一般」システムでは使用されますwatch -n15
が、ここでは使用できません。
重要で潜在的に脆弱なホストに新しいプログラムをインストールしたいかどうかわかりません。しかし、それが本当に簡単で喜んでいることを望むなら、という代替案を聞いたことがありますcmdwatch
。
私の監視プログラムの簡単な解決策は、whileループを使用することです。つまり:
while :; do zpool status && sleep 15; done
これは表面的に作用します。しかし、今はCtrl + Cを使用してループを中断することができないので、これは大きな面倒です。 Ctrl + Zを使用してバックグラウンドにループを配置して呼び出してps
PIDを取得し、プログラムをkill -9
呼び出すことができます。一般的な殺人は効果がありません。
だからそれは十分ではありません。私を除くすべてのユーザーにとって、システムが破損しているようです。別の投稿では、戻りコードが128より大きいことを確認したいと思います。SIGINT
これは、次のように130を提供する必要があります。
while [ 1 ]; do zpool status; test $? -gt 128 && break; done
私が実行すると動作しますただ注文するsleep 15
。より多くのコマンドを;
一緒にリンクしたり、&&
ループを壊したりできない古い状況を作成します。
私は何をすべきですか?
ベストアンサー1
終了条件を追加:
canary=$(mktemp)
echo "Canary is $canary"
while [[ -f "$canary" ]]; do
COMMAND
sleep 15
done &
脱出するにはrm
カナリアを殺してください( )。