我寫了兩個shell腳本a.sh和b.sh.在a.sh和b.sh中,我有一個無限循環,並且它們向終端輸出一些輸出。我想寫另一個調用a.sh和b.sh的腳本,但我希望用戶立即重新獲得對終端的控制權,而不是讓腳本無限運行,並且我想隱藏終端中的輸出。如何在後臺運行shell腳本並得不到輸出
回答
使用nohup
如果你的後臺工作需要很長時間才能完成,或者你只是使用SecureCRT或類似的東西登錄服務器。
重定向標準輸出和stderr的到/dev/null
忽略輸出。
nohup /path/to/your/script.sh > /dev/null 2>&1 &
如果它們在同一個目錄中的腳本,包含:
./a.sh > /dev/null 2>&1 &
./b.sh > /dev/null 2>&1 &
的&
末是什麼使你的腳本在後臺運行。
> /dev/null 2>&1
部分不是必需的 - 它重定向stdout和stderr流,因此您不必在終端上看到它們,您可能想要爲具有大量輸出的嘈雜腳本執行此操作。
感謝每一個機構。所有的答案真的很有用,謝謝。 – 2012-02-08 10:22:17
輸出重定向到一個文件是這樣的:
./a.sh > somefile 2>&1 &
這都將輸出和錯誤重定向到同一個文件。如果你想輸出和錯誤重定向到兩個不同的文件使用:
./a.sh > stdoutfile 2> stderrfile &
您可以使用/dev/null
爲一個或兩個文件,如果你不關心stdout和/或標準錯誤。有關重定向的詳細信息,請參閱bash manpage。
對不起,這是一個有點晚,但發現somple命令理想的解決方案,你不希望任何標準或錯誤輸出(信貸,這是由於:http://felixmilea.com/2014/12/running-bash-commands-background-properly/)
這重定向輸出爲null,保持屏幕清晰:
command &>/dev/null &
注意:命令將終止時,終端關閉了。 – Banana 2017-02-12 19:30:29
對於任何在將來想要解決方案以在會話結束後保持命令運行的人,我都會建議使用screen或tmux。他們必須在關閉初始會話後進行「會話中的會話」。如果您重新登錄,則可以重新連接到正在進行的會話。 非常適合運行rsync備份,例如同步需要長時間運行並且不想讓會話保持運行狀態。 – DanteAlighieri 2017-03-16 13:13:41
- 1. Python:在後臺運行腳本並執行輸入/輸出
- 2. Java:在後臺運行shell腳本
- 3. 在後臺運行shell腳本
- 4. Shell腳本輸出到控制檯並登錄同一行?
- 5. 如何在Ruby中觸發shell腳本並在後臺運行(異步)?
- 6. 如何從運行在php腳本後執行shell的輸出執行跳轉?
- 7. 如何運行本身啓動兩個後臺進程的後臺shell腳本?
- 8. 如何在後臺運行php腳本?
- 9. 如何讓腳本在後臺運行
- 10. 如何在shell腳本中獲得單行grep的輸出?
- 11. 如何在後臺從蘋果腳本運行多個shell腳本
- 12. 在後臺運行腳本?
- 13. 在後臺運行腳本
- 14. 如何在後臺運行shell命令並禁止所有輸出?
- 15. 如何跟蹤運行後臺的shell腳本?
- 16. Shell腳本檢查一個腳本輸出,然後運行第二個腳本
- 17. ssh在後臺運行腳本並獲得其pid
- 18. Python腳本輸出到控制檯,即使它在後臺運行
- 19. bash:腳本不在後臺運行
- 20. 輸出文件沒有創建在後臺運行python腳本
- 21. 如何遠程運行python腳本並輸出輸出
- 22. 從Ruby文件運行Shell腳本並捕獲輸出
- 23. 在後臺運行前臺ksh腳本
- 24. 運行腳本並執行PHP輸出
- 25. 如何在後臺運行linux進程並記錄nohup輸出
- 26. 在後臺運行CakePHP Shell
- 27. 退出與後臺進程shell腳本
- 28. 在後臺運行Cron作業腳本並運行15小時
- 29. mac shell腳本循環在後臺運行忽略
- 30. Android shell腳本無法在後臺運行命令
只是爲了添加,有時會有腳本的參數,那麼上面的命令將返回**不明確的輸出重定向**。 – sabertooth1990 2013-11-06 15:00:19
我發現的一個更好的方法是使用 'nohup /path/to/your/script.sh parameter1>&1&' 如果有人知道更好的方法。 – sabertooth1990 2013-11-06 15:06:46
如果您使用'nohup',則不需要'/ dev/null 2>&1',因爲它已經將所有STDOUT和STDERR流自動附加到nohup.out文件。 使用只是:'nohup/path/to/your/command&' – leonarth 2015-11-13 16:28:59