Mam skrypt do uruchomienia, który uruchamia, który uruchamia serwer, a następnie mówi mu, aby zakończyć z wdziękiem, gdy launchd zabije go (co powinno być przy zamykaniu). Moje pytanie: jaki jest właściwy, idiomatyczny sposób, aby nakazać skryptowi, aby bezczynnie, dopóki nie otrzyma sygnału? Czy powinienem użyć pętli while-true-sleep-1, czy jest lepszy sposób na zrobienie tego?Bash - Jak powinienem pozostawać bezczynny, dopóki nie otrzymam sygnału?
#!/bin/bash
cd "`dirname "$0"`"
trap "./serverctl stop" TERM
./serverctl start
# wait to receive TERM signal.
'while while:; spać 1; done' wydaje mi się OK. – choroba
Czy można uzyskać PID procesu spawned przez 'serverctl'? Z 'jobs -p' lub' pgrep -P'? –
Rzeczywisty proces serwera działa w sesji 'screen'. Może nie być złym pomysłem, aby na to czekać, aby niespodziewane wyjście spowodowało zakończenie działania tego skryptu i ostrzeżenie, że proces się zakończył. Z drugiej strony minęło piętnaście miesięcy i działało bez zarzutu. :-P –