「サービスネットワークの再起動」タイムアウト

「サービスネットワークの再起動」タイムアウト

トラブルシューティング通話の一部としてサービスネットワークを再起動するFedora 22で実行されるスクリプトがありますservice network restart。コマンドの実行に時間がかかりすぎるかどうかを確認したいと思います。時間がかかりすぎると、「ネットワークサービスの再起動中にエラーが発生しました」というメッセージを出力したいと思います。それ以外の場合は、スクリプトを続行したいと思います。

答え1

timeoutコマンドを使用して、指定したタイムアウト内にコマンドまたはスクリプトを実行できます。これに似たもの:

timeout 10m command 

コマンドが10分以内に完了するのを待ち、そうでない場合はコマンドを終了し、ステータス124で終了します。その後、コマンドの終了ステータスを確認し、timeoutそれに基づいて適切なメッセージを印刷できます。詳しくはこちらをご覧ください。タイムアウトマンページ。

長いコマンドを終了しないようにするには、次のようにします。

(( sleep $TIMEOUT; echo "command took so long!" ) & exec $COMMAND )

タイムアウト時にメッセージが印刷されますが、コマンドは引き続き実行されます。

答え2

元のシステムスクリプトの編集を気にしない場合は、スクリプト内に同様の機能を作成できます。

timeoutf(){
    #If hangs 1 minute, dies..
    sleep 1m 
    kill $PPID  
}

timeoutf&

関連情報