Ho scritto due script di shell a.sh e b.sh. In a.sh eb.sh ho un ciclo infinito e stampano un po 'di output sul terminale. Voglio scrivere un altro script che chiama sia a.sh che b.sh ma voglio che l'utente riprenda immediatamente il controllo del terminale, invece di avere lo script eseguito all'infinito e voglio nascondere l'output nel terminale.Come eseguire uno script di shell in background e non ottenere output
risposta
Utilizzare nohup
se il lavoro in background richiede molto tempo per terminare o basta utilizzare SecureCRT o qualcosa di simile per accedere al server.
reindirizzare il stdout e stderr a /dev/null
ignorare l'uscita.
nohup /path/to/your/script.sh > /dev/null 2>&1 &
Se sono nella stessa directory del script che contiene:
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
Il &
alla fine è ciò che rende il vostro script eseguito in background.
La parte > /dev/null 2>&1
non è necessaria - reindirizza i flussi stdout e stderr in modo da non doverli vedere sul terminale, cosa che si potrebbe voler fare per gli script rumorosi con un sacco di output.
grazie ogni corpo. tutte le risposte sono state davvero utili, grazie. –
reindirizzare l'output in un file in questo modo:
./a.sh > somefile 2>&1 &
Questa favore sia stdout e stderr allo stesso file. Se si desidera reindirizzare stdout e stderr di due file diversi utilizzare questo:
./a.sh > stdoutfile 2> stderrfile &
È possibile utilizzare /dev/null
come uno o entrambi i file se non vi interessa circa lo stdout e/o stderr.
Vedere bash manpage per dettagli sui reindirizzamenti.
Spiacente, questo è un po 'tardi, ma ha trovato la soluzione ideale per i comandi somple in cui non si desidera alcun output standard o di errore (di credito dove è dovuto: http://felixmilea.com/2014/12/running-bash-commands-background-properly/)
Questo reindirizza l'output a null e mantiene schermo chiaro:
command &>/dev/null &
Nota: il comando verrà terminato quando il terminale è chiuso. – Banana
Chiunque guardi a questo in futuro chi vuole una soluzione per mantenere i comandi in esecuzione al termine di una sessione, suggerirei screen o tmux. È essenziale eseguire una "sessione all'interno di una sessione" che prosegue dopo aver chiuso la sessione iniziale. È quindi possibile riconnettersi alla sessione in corso se ci si collega nuovamente. Ottimo per l'esecuzione di backup rsync, ad esempio dove la sincronizzazione deve essere eseguita per un lungo periodo e non si desidera lasciare la sessione in esecuzione. – DanteAlighieri
- 1. Come eseguire uno script python in background?
- 2. Come posso attivare uno script di shell ed eseguire in background (async) in Ruby?
- 3. Come eseguire uno script di shell utilizzando file docker CMD
- 4. Come eseguire uno script di shell interattivo usando java runtime?
- 5. nginx - Come eseguire uno script di shell su ogni richiesta?
- 6. Ottenere PHP per eseguire uno script Python
- 7. Come avviare ed eseguire script esterni in background?
- 8. Eseguire script di shell in pitone
- 9. Ottieni output di script mongo shell
- 10. Come chiamare uno script di shell e passare argomento da un altro script di shell
- 11. esecuzione del comando shell in background dallo script
- 12. Come eseguire uno script all'avvio di Ubuntu?
- 13. Incorporamento awk in uno script di shell
- 14. Blocca commenti in uno script di shell
- 15. Cosa significa $ @ in uno script di shell?
- 16. Come eseguire script di shell da LaTeX?
- 17. Aggiunta di un'interruzione di riga a un file di output in uno script di shell
- 18. Come usare arricciatura in uno script di shell?
- 19. C'è un modo in uno script di shell per capire dove viene reindirizzato il suo output?
- 20. Come includere il file in uno script di shell bash
- 21. Un modo pulito per avviare uno script di shell in background da Jenkins
- 22. Eseguire uno script in Dockerfile
- 23. Posso eseguire uno script Python come servizio?
- 24. Come si esegue uno script di shell come root (sudo)?
- 25. Eseguire tre script di shell contemporaneamente
- 26. Come eseguire shell exec in background mentre php continua
- 27. Esecuzione di due server di nodi da un singolo comando shell utilizzando uno script di shell
- 28. Come ottenere Hudson CI per eseguire uno script PowerShell?
- 29. Eseguire un comando shell da uno script di shell senza fermarsi, se si verifica un errore
- 30. Come posso eseguire uno script PowerShell come attività in background senza visualizzare una finestra?
Solo per aggiungere, a volte ci sono argomenti per gli script, quindi il comando sopra restituirà ** Reindirizzamento output ambiguo **. – sabertooth1990
Un modo migliore che ho trovato è quello di utilizzare 'nohup /path/to/your/script.sh parameter1> & 1 &' Se qualcuno conosce un modo migliore. – sabertooth1990
Non è necessario '/ dev/null 2> & 1' se si utilizza' nohup' poiché aggiunge già tutti i flussi STDOUT e STDERR al file nohup.out automaticamente. Utilizzare solo: 'nohup/percorso/a/tuo/comando &' – leonarth