( sleep 300 ; echo "80" > /sys/class/leds/blue/brightness ) &
W ten sposób skrypt kontynuuje działanie lub natychmiast przywracasz kontrolę, podczas gdy rozpoczyna się nowe zadanie skryptu w tle, z dwoma poleceniami: uśpienie i echo.
Wspólna błąd próbuje dać albo sleep
albo echo
albo zarówno &
które nie będą działać zgodnie z przeznaczeniem. Uruchomienie szeregu poleceń powoduje ()
jednak ich odrodzenie w osobnym procesie powłoki, z którym możesz następnie wysłać całe tło &
.
Do tego dowcipu, gdzie uważam, że jest to aktywnie przydatne. W urządzeniu wbudowanym rozwijam główną aplikację, która współpracuje z organem nadzorującym. Jeśli nie powiedzie się to w sposób, który uruchamia resetowanie watchdoga wkrótce po uruchomieniu, trudno jest to naprawić zdalnie, ponieważ okres między uruchomieniem systemu operacyjnego a resetowaniem jest dość krótki, niewystarczający do ssh i zablokowania uruchamiania aplikacji. Potrzebuję więc sposobu, aby ustalić, że system został ponownie uruchomiony tak szybko i wprowadzić opóźnienie, jeśli tak, aby dać sobie czas na ręczne naprawienie.
[ -f /tmp/startdelay ] && sleep 30
touch /tmp/startdelay
( sleep 30 ; rm /tmp/startdelay ) &
[ -f /tmp/noautostart ] && exit 0
start_app
Jeśli się zaloguję i touch /tmp/noautostart
uruchomię główną aplikację, nie uruchomi się. Jeśli watchdog się uruchomi, rm /tmp/startdelay
nie zostanie wykonany, a przy następnym uruchomieniu systemu da mi dodatkowe 30 sekund, aby go zatrzymać. W przeciwnym razie restart nastąpi szybko, bez opóźnień.