次のようなものを実行しようとしています:
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
を追加します。
timeout
MacOSの場合: stackoverflow.com/a/21118126/451480timeout
の殺害を具体的に確認したい場合eコマンド(他の理由でコマンドが失敗するのではなく)、終了ステータス124を確認します。