程序與終端 終端關閉後,後台程序也終止

2021-07-27 21:22:24 字數 1611 閱讀 1385

ssh登入伺服器,並開啟乙個後台程序,然後自己去做其他事情了。等過了一會兒,當再來檢視時,發現開啟的後台程序莫名其妙的掛掉了。

無論程序是在後台還是在前台,它都與啟動它的終端例項緊密繫結。當終端關閉時,它通常向繫結到終端的所有程序(前台、後台程序)傳送sighup訊號。 這表示程序終止,因為它們的控制終端將很快不可用。

本例中,ssh登入終端,超過一定時間沒有操作後,連線斷開,終端關閉,與終端相關的所有程序(包括前台和後台程序)都將終止。

開啟乙個後台程序

**如下:

terminal_process.c

#include

int main()

return

0;}

編譯、後台執行

$ gcc terminal_process.c -o terminal_process

$ ./terminal_process &

檢視前後臺程序、終端

$ ps -o pid,ppid,pgrp,session,tpgid,comm,tty

pidppid

pgrp

sess

tpgid

command

tt15907

15906

15907

15907

16145 bash pts/1

15946

15907

15946

15907

16145 terminal_proces pts/1

16145

15907

16145

15907

16145 ps pts/1

其中,

過一段時間,沒有操作終端,ssh登入終端自動斷開。

再檢視程序,可以看到剛才開啟的程序已經終止。

另外,本地終端強制關閉,也有類似的問題。

終端開啟乙個後台程序後,例如termal_process,然後終端下輸入命令exit正常退出.

$ ./terminal_process &

$ ps -ef | grep terminal_process

lanyang 16946

16907010

:18 pts/100:

00:00 ./terminal_process

$ exit

登入另乙個終端檢視

$ ps -ef | grep terminal_process

lanyang 1694610

10:18 ? 00:00

:00 ./terminal_process

terminal_process的父程序已經變成了init程序,不會出現剛才的問題。

除了這個方法,還有nohup,disown等其他,有興趣可以自行搜尋檢視。

linux終端關閉後台程序也結束原因分析和nohup的使用

讓linux的程序不受終端影響

linux 技巧:讓程序在後台可靠執行的幾種方法

後台程序session關閉後自動關閉

使用putty連線伺服器,執行caddy 開啟caddy server後端服務,但是當關閉putty連線後,caddy程序會自動關閉。使用nohup caddy 讓程序在session關閉後繼續執行 linux的nohup命令的用法 這篇文章講了乙個錯誤的做法 執行了nohup caddy 沒有退回...

Mac 終端操作程序

執行下述終端命令 將portnum替換為要查詢的埠號 注意埠號前面不要空格 sudo lsof i portnum 舉個例子 sudo lsof i 8100 當然也可以不用管理員許可權 lsof i 8100 查詢結果如圖,各項引數的含義 command使用改埠的程序名稱 pid程序號 liste...

Mac在終端檢視程序 殺死程序

在不知程式埠號的情況下 這樣搜尋好像會搜尋出另外的同名執行緒,我也不是很清楚 ps axu 本機名 grep 程式名 ps axu shuchan grep mysql 我的本機名是 shuchan,要查詢的程式是mysql,有的程式名區分大小寫 示例 sc shuchan ps axu shuch...