( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
Dessa forma, seu script continua, ou você restaura o controle imediatamente, enquanto uma nova tarefa em segundo plano do script é iniciada, com dois comandos: sleep e echo.
O erro comum é tentar dar sleep
ou echo
ou ambos os &
, que não funcionarão como pretendido. Lançando uma série de comandos em ()
, mas os gera em um processo de shell separado, que você pode enviar todo em background com &
.
Para essa inteligência, onde eu achei ativamente útil. Em um dispositivo embarcado desenvolvo o principal aplicativo que funciona com um watchdog. Se falhar de uma forma que desencadeia a reinicialização do watchdog logo após a inicialização, é difícil corrigir remotamente, pois o período entre o início do SO e a reinicialização é bastante curto, não o suficiente para o ssh, e bloqueia a inicialização do aplicativo. Então, eu preciso de uma maneira de determinar o sistema reiniciado tão rápido e introduzir um atraso, se isso acontecer, para me dar tempo para corrigi-lo manualmente.
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
Se eu fizer login e executar touch /tmp/noautostart
, o aplicativo principal não será iniciado. Se o watchdog entrar em ação, rm /tmp/startdelay
não será executado e na próxima vez que o sistema iniciar, ele me dará 30 segundos extras para pará-lo. Caso contrário, o reinício será rápido, sem demora.