Linux後台執行程式的方法總結

2021-10-25 07:45:28 字數 3319 閱讀 9472

使用場景:

主要有三種方法:

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....