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