讓command在背景跑#
在要跑的指令結尾加上 &
jupyterlab &
指令和 & 中間通常會空一格同時又不會output
/path/to/your/script.sh > /dev/null 2>&1 &1 代表螢幕輸出,2 代表錯誤輸出
檢視背景執行的process#
jobsKill掉特定背景程式#
kill %1最後面的數字是取決於jobs給的number (會從1開始)
[1]- Running sleep 100 &
[2]+ Running sleep 200 &讓ssh連線detach後程序能繼續跑#
接在已經背景執行的程序後
disown -h %1或是可以在下背景時同時搭配nohup
nohup jupyterlab &nohup會把原本output到terminal的東西給寫到nohup.out
如果你的指令會一直輸出內容,就有可能讓nohup.out 這個檔案異常巨大
可以搭配上面的> /dev/null 2>&1 會將所有輸出直接丟掉
nohup /path/to/your/script.sh > /dev/null 2>&1 &其他套件#
還能用像是screen/ tmux來假裝連線一直都在
把命令放到背景執行#
Linux 允許把命令放到背景中執行,僅僅需要在命令的最後加上一個 &,就可以利用 Linux 的多工特性執行多個背景程式,如以下:
bang@linuxdiary:~$ sleep 300 &- [1] 代表指定給該工作的序號
- 8521 代表 PID (process ID)
若想查詢當前的背景工作可使用 jobs
指令,
bang@linuxdiary:~$ jobs但如果後悔把命令放入背景時怎麼辦?你可以利用 fg 命令把工作帶回前景 (foreground);如果背景中堆積了好幾個命令,可用行程識別碼或工作序號來挑選他們。
bang@linuxdiary:~$ fg %1或
bang@linuxdiary:~$ fg 8521正在前景中執行的 sleep 300 是否困擾著你,可以不要等待嗎? 是的~ 可以
此時你可以點擊鍵盤上的組合鍵 Ctrl + Z ( 暫停程序,並將程序放置背景 )
bang@linuxdiary:~$ fg %1但此時的工作是暫停的,若希望它能繼續在背景中執行,可利用 bg 命令恢復在背景(background) 中暫停的工作。
bang@linuxdiary:~$ bg %1如果想要刪除在背景的工作可用 kill 來完成
bang@linuxdiary:~$ kill %2最後介紹的指令,將對常用 ssh 遠端登入的使用者很有幫助,nohup
(no hang up,不要掛斷)。當使用者利用 ssh 等指令或軟體登入主機後,想要執行某個指令,但一旦登出或關掉 ssh 軟體,那個在背景執行的工作會跟著消失,主要原因是它的父行程被關閉了,也就是使用者剛剛關閉的 bash,那怎麼辦?nohup 可以為您強制保存背景工作,即便父行程被關閉,以下為示範
bang@linuxdiary:~$ nohup sleep 500 &此時關閉 shell,重新登入
bang@linuxdiary:~$ ps -fC sleep