Linux中後台執行任務

2021-09-07 08:41:19 字數 1328 閱讀 2573

執行時, 可以在命令最後新增 & 使其後台執行, 但是其輸出依然會顯示, 而且其執行是和當前shell繫結的

如果指令碼已經執行,  可以使用ctrl-z暫停, 然後使用 bg 讓其轉入後台, 再 disown 解除關聯, 例如:

^z

[1]+ stopped make -j2

[tomcat@n00 master]$ bg

[1]+ make -j2 &

# 注意: disown之後, 此任務將不出現於jobs, 也不能再轉回前台, 但是輸出依然是和當前shell繫結的[tomcat@n00 master]$ disown

[tomcat@n00 master]$ exit

檢視在後台執行的任務

jobs -l

# -l: 用於顯示任務的 process id

將後台任務轉回前台

%process-id

# or

fg process-id

如果要在屏顯的同時記錄日誌, 通過tee命令

$ make -j2 | tee output.log

對於需要在關閉shell後還需要繼續執行的任務, 需要使用nohup, 例如

nohup make -j1 target_devices=y1 > ~/openwrt/logs/20170115.log 2>&1 &# 其中執行的命令是

"make -j1 target_devices=y1

"

上面的命令會將輸入記錄到log檔案.  對於上面的命令的解釋:

bash 中 0, 1, 2 三個數字分別代表 stdin_fileno, stdout_fileno, stderr_fileno, 即標準輸入(一般是鍵盤), 標準輸出(一般是使用者終端控制台), 標準錯誤(出錯資訊輸出)

0 標準輸入 (一般是鍵盤)

1 標準輸出 (一般是使用者終端控制台)

2 標準錯誤 (出錯資訊輸出)

輸入重定向, 例如 cat < test.c 將 test.c 重定向為 cat 命令的輸入源.

輸出重定向, 用其他輸出目標替換標準輸出, 例如 ls > 1.txt 將 ls 的結果從標準輸出重定向為 1.txt 文字. 有時候會看到如 ls >> 1.txt這類的寫法, >> 的區別在於 > 用於新建而 >> 用於追加, 即 ls > 1.txt 會新建乙個 1.txt 檔案並且將 ls 的內容輸出到新建的 1.txt 中, 而 ls >> 1.txt 則用在 1.txt 已經存在而我們只是想將 ls 的內容追加到 1.txt 文字中的時候

Linux 任務後台執行(總結)

使任務後台執行fg 將後台執行或者停止的任務放到前台執行。bg使後台停止的任務執行在後台 jobs 列出後台執行或停止或已完成的程序 ctrl z 將當前在shell上執行的任務放入後台停止,可以結合 bg 命令使任務後台執行 上面方法中執行的程序都屬於shell的子程序,所以一旦shell關閉,斷...

Linux後台執行任務 nohup

不中斷 表示在後台執行命令,沒有辦法通過ctrl c結束命令,但是可以通過關閉終端來殺掉程序。nohup 不掛起 nohup命令 如果你正在執行乙個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶 關閉終端之後繼續執行相應的程序。nohup就是不掛起的...

linux後台 執行 關閉 檢視等任務

涉及到命令 fg bg jobs nohup ctrl z ctrl c1.放在命令最後,功能是這條命令放到後台執行 jingsia localhost asss watch n 1 date 1 272892.jobs 檢視後台執行的任務正在執行 jingsia localhost asss jo...