È possibile avviare un comando o un terminale di uscita dello script Bash e NON interrompere il comando?
La mia soluzione era quella di eseguire cron in un momento specifico del giorno, ma sono sicuro che c'è qualcosa di più facile.
È possibile avviare un comando o un terminale di uscita dello script Bash e NON interrompere il comando?
La mia soluzione era quella di eseguire cron in un momento specifico del giorno, ma sono sicuro che c'è qualcosa di più facile.
Risposte:
Per evitare la propagazione dei segnali di uscita ai processi figlio del terminale e della shell, eseguire il comando con nohup, ad esempio:
nohup cmd &
cmd & disownfunziona anche, poiché &viene trattato come un ;separatore di comandi. Il comando disown rimuove la connessione tra la sessione della shell bash e il comando in background.
cmd &|.
Utilizzando screen:
screen -S <session name> -d -m <your command>
dopodiché puoi uscire dal terminale, inoltre puoi ricollegarlo ad esso:
screen -r <session name>
Maggiori informazioni: riferimento
Se si desidera eseguire un comando o un file specifico ogni secondo circa in background dopo essere usciti dal terminale, è possibile provare questa semplice piccola cosa;
nohup watch -n5 'bash script.sh' &
Sarebbe eseguito scipt.sh ogni 5 secondi.
Inserisci un carattere "&" dopo il tuo comando.
per esempio:
/home/your/script.sh &
/home/your/script.sh- in quanto non è stato staccato dal suo "genitore", ma solo "in background". Usa nohupper staccarlo per davvero.
nohup- che registra anche tutto l'output (ora invisibile) in un file chiamato nohup.outsituato nella directory da cui hai avviato il comando.
jobscomando. Molto spesso voglio essere in grado di tornare al processo della shell dopo averlo messo in background.