Snažím se spustit něco jako:
sudo dhclient $wifi || otherFunction
Problém je, když dhclient selže, místo zavržení chyby prostě visí.
Jak mohu přepsat výše uvedené, takže dhclient je zabit a otherFunction zavolán, pokud dhclient nedojde do 60 sekund?
Odpovědět
Vaše značka timeout dává vše pryč:
sudo timeout 60 dhclient $wifi || otherFunction
Příklad:
sudo timeout 3 sleep 5 || echo finished early
Používá nástroj pro časový limit poskytované balíčkem GNU coreutils v systému Linux.
Komentáře
Odpověď
Použijte timeout .
timeout 2 sleep 1 echo $? 0 timeout 1 sleep 2 echo $? 124
Komentáře
- nefunguje ' bohužel v systému MacOS
odpověď
Použijte timeout zabalený jako gtimeout s coreutils port v brew :
brew install coreutils gtimeout --help
To bude fungovat s /usr/local/bin ve vašem PATH. Pokud chcete použít timeout jak byl původně pojmenován, přidejte /usr/local/opt/coreutils/libexec/gnubin do svého PATH.
timeoutpro MacOS: stackoverflow.com/a/21118126/451480timeoutzabití Příkaz e (na rozdíl od příkazu, který selhal z jiných důvodů), zkontrolujte stav ukončení 124.