Ich versuche, Folgendes auszuführen:
sudo dhclient $wifi || otherFunction  Problem ist, wenn dhclient schlägt fehl, es hängt nur, anstatt einen Fehler auszulösen. 
 Wie kann ich das Obige neu schreiben, damit dhclient ist getötet und otherFunction wird aufgerufen, wenn dhclient nicht in 60 Sekunden beendet ist? 
Antwort
Ihr Timeout -Tag verrät alles:
sudo timeout 60 dhclient $wifi || otherFunction Ein Beispiel:
sudo timeout 3 sleep 5 || echo finished early Hierbei wird das Timeout-Dienstprogramm verwendet bereitgestellt vom GNU coreutils-Paket unter Linux.
Kommentare
- funktioniert unter MacOS leider nicht '
-  timeoutfür MacOS: stackoverflow.com/a/21118126/451480
-  Wenn Sie speziell nach timeoutsuchen möchten, töten Sie th Überprüfen Sie den Befehl (im Gegensatz zu dem Befehl, der aus anderen Gründen fehlschlägt) auf den Exit-Status 124.
Antwort
 Verwenden Sie  timeout . 
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124 Kommentare
- funktioniert nicht ' funktioniert unter MacOS leider nicht
Antwort
 Verwenden Sie die timeout, die als gtimeout mit der  Port in  brew : 
brew install coreutils gtimeout --help  Das funktioniert mit /usr/local/bin in Ihrer PATH. Wenn Sie timeout wie ursprünglich benannt verwenden möchten, fügen Sie /usr/local/opt/coreutils/libexec/gnubin zu Ihrer PATH hinzu.