私は Fedora 22 でスクリプトを実行しており、トラブルシューティングの一環としてサービス ネットワークを再起動していますservice network restart
。そのコマンドの実行に時間がかかりすぎないか確認したいと思います。時間がかかりすぎる場合は、「ネットワーク サービスの再起動エラー」というメッセージを出力します。それ以外の場合は、スクリプトを続行します。
答え1
timeout
コマンドを使用すると、指定されたタイムアウトでコマンドまたはスクリプトを実行できます。次のようになります。
timeout 10m command
これは、コマンドが 10 分以内に終了するのを待機し、そうでない場合はコマンドを強制終了してステータス 124 で終了します。その後、の終了ステータスを確認しtimeout
、それに基づいて適切なメッセージを出力できます。詳細については、ここを参照してください。タイムアウトのマンページ。
長いコマンドを強制終了したくない場合は、次のようにします。
(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )
TIMEOUT の場合、メッセージは印刷されますが、コマンドは実行され続けます。
答え2
元のシステムスクリプトを編集する必要がない場合は、スクリプト内に次のような関数を作成できます。
timeoutf(){
#If hangs 1 minute, dies..
sleep 1m
kill $PPID
}
timeoutf&