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
.
timeout
pro MacOS: stackoverflow.com/a/21118126/451480timeout
zabití Příkaz e (na rozdíl od příkazu, který selhal z jiných důvodů), zkontrolujte stav ukončení 124.