次のようなものを実行しようとしています:
sudo dhclient $wifi || otherFunction
問題はdhclientが失敗すると、エラーがスローされるのではなく、ハングするだけです。
上記を書き直すと、dhclientは次のようになります。 dhclientが60秒以内に終了しない場合、強制終了され、otherFunctionが呼び出されますか?
回答
タイムアウトタグですべてがわかります:
sudo timeout 60 dhclient $wifi || otherFunction
例:
sudo timeout 3 sleep 5 || echo finished early
これは、タイムアウトユーティリティを使用します Linux上のGNUcoreutilsパッケージによって提供されます。
コメント
回答
回答
をgtimeoutとしてポート brew :
brew install coreutils gtimeout --help
これはPATHの/usr/local/binで機能します。元の名前でtimeoutを使用する場合は、PATHに/usr/local/opt/coreutils/libexec/gnubinを追加します。
timeoutMacOSの場合: stackoverflow.com/a/21118126/451480timeoutの殺害を具体的に確認したい場合eコマンド(他の理由でコマンドが失敗するのではなく)、終了ステータス124を確認します。