Shell

在沒有終端輸出的情況下執行命令

  • July 30, 2018

讓我介紹一下我的問題的背景。我正在使用一個終端 RSS 閱讀器newsboat,它允許使用宏對連結進行操作。例如,我有一個正在執行的宏cd ~/videos && youtube-dl %u,它將下載一個 youtube 影片到~/videos. 但是, 的輸出youtube-dl將在我的終端中列印,直到下載完成,此時我無法繼續使用newsboat.

我想知道如何表達該命令,以便它在“其他地方”執行,以便我可以立即繼續使用執行它的終端。

如果您根本不需要輸出,則將其重定向到 /dev/null

yourcommand > /dev/null 2>&1

否則你可以重定向到一個文件:

yourcommand > /somwhere/file 2>&1

當您從另一個應用程序執行命令並且想要立即使用新聞閱讀器時,您可能希望在後台執行該命令。我不確定它在這條新聞船上是如何工作的,但是在 shell 中,您可以使用 & 將程序發送到後台

yourcommand > /somwhere/file 2>&1 &

要在後台靜默執行命令,即使終端隨後關閉也會“存活”,請screen在分離模式下使用:

screen -dm your_command(-s)

screen使用執行執行的命令重新附加

screen -r

要分離重新連接的螢幕,請按CTRL+A+D

如果沒有screen您應該使用 執行命令nohup,因此如果終端隨後關閉,該程序將執行,如screen實用程序:

nohup your_command(-s) &>/dev/null  &

引用自:https://unix.stackexchange.com/questions/459399