使用場景:
主要有三種方法:
nohup:可以記錄發生日誌。
tmux:可以儲存上次的工作流 。
同時需要說明的是:
操作:在命令後面加入空格 &
。
作用:使用這種方法放入後台的命令,在後台處於執行狀態。
限制條件:放入後台執行的命令不能與前台有互動,否則這個命令是不能在後台執行的。
注意事項:在後台執行作業時要當心,需要使用者互動的命令不要放在後台執行,因為這樣機器就會一直等待。不過,作業在後台執行一樣會將結果輸出到螢幕上,干擾工作。
缺點:
當使用者登出(logout)或者網路斷開時,終端會收到 hup(hangup)訊號從而關閉其所有子程序。因此,我們的解決辦法就有兩種途徑:要麼讓程序忽略 hup 訊號,要麼讓程序執行在新的會話裡從而成為不屬於此終端的子程序。有nohub和setsid兩種方法:
[root@node2 ~
]# echo $$ //顯示 當前shell的程序號
22761
[root@node2 ~
]# setsid test.sh &
//設定父程序為init程序(程序號1)
[root@node2 ~
]# ps -ef|grep test.sh //查詢放入後台的程序
需要輸入 exit 退出,會自動將輸出寫到當前目錄下的 nohup.txt中。方法如下:
[root@node2 ~
]# nohup test.sh &
[root@node2 ~
]# exit //輸入exit命令退出終端
說明
tmux (terminal multiplexer,終端復用器)是一種終端復用器,是會話與視窗的"解綁"工具,將它們徹底分離。
tmux開源**:可以在openbsd,freebsd,netbsd,linux,os x,solaris上執行。
安裝:
# centos 或 fedora
$ sudo yum install tmux
啟動:
$ tmux
退出:
#按下ctrl+d或者顯式輸入exit命令
$ exit
新建會話:
tmux new -s
分離會話:
ctrl+b d
或者輸入tmux detach
命令,就會將當前會話與視窗分離。
$ tmux detach
檢視所有會話:
$ tmux ls
# or
$ tmux list-session
接入會話
tmux attach命令用於重新接入某個已存在的會話。
# 使用會話編號
$ tmux attach -t 0
# 使用會話名稱
$ tmux attach -t
殺死會話:
tmux kill-session命令用於殺死某個會話。
# 使用會話編號
$ tmux kill-session -t 0
# 使用會話名稱
$ tmux kill-session -t
切換會話:
# 使用會話編號
$ tmux switch -t 0
# 使用會話名稱
$ tmux switch -t
重新命名會話:
$ tmux rename-session -t 0
#將0號會話重新命名。
綜上,這裡給出示例流程:
新建會話tmux new
-s my_session。
在 tmux 視窗執行所需的程式。
按下快捷鍵ctrl+b d將會話分離。
下次使用時,重新連線到會話tmux attach-session -t my_session。
窗格操作的快捷鍵:
ctrl+b %:劃分左右兩個窗格。
ctrl+b ":劃分上下兩個窗格。
ctrl+b :游標切換到其他窗格。是指向要切換到的窗格的方向鍵,比如切換到下方窗格,就按方向鍵↓。
ctrl+b x:關閉當前窗格。
作用:在命令執行過裎中按 ctrl+z 快捷鍵,命令在後台處於暫停狀態。
注意:使用ctrl+z 放入後台的命令,就算不和前台有互動,能在後台執行,也處於暫停狀態,因為 ctrl+z 快捷鍵就是暫停的快捷鍵。
[root@computer1~
]# top
//在top命令執行的過程中,使用了ctrl+z後[1
]+ 已停止
//top命令被放入後台,工作號是1,狀態是暫停。
[root@computer1~
]# jobs //檢視任務[1
]+ 已停止 top
[root@computer1~
]# fg %
1//將後台任務調到前台
# ctrl+z
//掛起當前任務
# ctrl+c
//結束當前任務
# jobs
//檢視任務,返回任務編號n
# jobs -l
//檢視任務,返回任務編號n和程序號
# bg %n
//將編號n的任務轉為後台執行
# fg %n
//將編號n的任務轉為前台執行
session(會話)
:每開啟一次終端(本地或遠端)登入linux,都會生成乙個新的會話:
linux命令放入後台執行方法(&和ctrl+z)詳解版
nohup命令、setsid命令、daemon(守護程序)簡要梳理
tmux 使用教程-阮一峰
Linux後台執行程式
shell command dev null 2 1 最後乙個符號 意思是讓程式在後台執行。dev null 的作用是將標準輸入轉向null,這樣就忽略當前的指令碼標準輸出。2 1 的作用是將標準錯誤連線至標準輸出,也將被忽略。一直不明白1 2的作用。原來!作業系統預設指定3個檔案 0標準輸入 1標...
Linux後台執行程式
在我們平常的時候執行程式的時候會產生很多的資訊,這些資訊有時候有用,有時候沒用,不過這些資料都會在該程式的log中儲存,所以把這些資訊放在前台就不是很好。我們可以將指令碼放在後台執行,不要將這些資訊顯示出來。將shell放入後台執行 比如 指令碼名稱 storm.sh 後台執行 storm.sh 這...
Linux 後台執行程式
nohup mqtt dev null 2 1 的意思是在後台執行,在執行 a.out 的時候,即使你用ctrl c,那麼a.out照樣執行 因為對sigint訊號免疫 但是要注意,如果你直接關掉shell後,a.out程序同樣消失。nohup的意思是忽略sighup訊號,所以當執行nohup a....