Ho uno script per lanciare da avviare che avvia un server, quindi dice di uscire con garbo quando launchd lo uccide (che dovrebbe essere all'arresto). La mia domanda: qual è il modo appropriato e idiomatico di dire alla sceneggiatura di rimanere inattiva finché non riceve il segnale? Dovrei semplicemente usare un ciclo while-true-sleep-1, o c'è un modo migliore per farlo?Bash - Come dovrei restare inattivo finché non ottengo un segnale?
#!/bin/bash
cd "`dirname "$0"`"
trap "./serverctl stop" TERM
./serverctl start
# wait to receive TERM signal.
'while:; dormi 1; done' sembra OK per me. – choroba
Puoi ottenere il PID del processo generato da 'serverctl'? Con 'jobs -p' o' pgrep -P'? –
L'attuale processo del server è in esecuzione in una sessione 'screen'. Potrebbe non essere una cattiva idea attenderlo, in modo che un'uscita inaspettata causi la fine di questo script e avvisi all'avvio che il processo non funziona. D'altra parte, sono passati quindici mesi e funziona bene così com'è. :-P –