Centos7 讓程式在後台執行的方法測試

2021-09-08 05:07:38 字數 1500 閱讀 2600

參考:

參考文章中提供了三種方法來使指令碼能夠在後台執行,不受當前tty的影響,從而在關閉當前tty時仍能繼續執行。

實際使用的過程中,對於centos7,生效的是後2種;第一種歸屬tty存在,使用jobs可以看到任務,通過fg可以把job拉到前台來,退出終端後程序退出了。

使用nohup去除tty斷開時hangup訊號的影響

nohup ***.sh &

下面例子可以看到tty歸屬存在,ppid不為1,為tty持有,fg可以把命令拉到前台

[aaa@~/test]$ nohup ./a.out 28881 &

[aaa@~/test]$ ps -ef

uid pid ppid c stime tty time cmd

aaa 17067 16713 0 18:39 pts/1 00:00:00 ./a.out 28882

[aaa@~/test]$ fg

nohup ./a.out 28884

使用setsid把程序的ppid設定為1,和tty無關

setsid ***.sh 2>&1 > ***.log

下面例子可以看到,使用者tty不存在,ppid為1-程序被系統持有。

[aaa@~/test]$ setsid ./a.out 28882 2>

&1 > a.log

[aaa@~/test]$ ps -ef

uid pid ppid c stime tty time cmd

aaa 18048 1 0 18:58 ? 00:00:00 ./a.out 28882

[aaa@~/test]$ fg

-bash: fg: current: no such job

使用&的(***.sh &)這種形式

(***.sh 2>&1 > ***.log &)

下面的例子看到,使用者tty是有的,但ppid為1-程序被系統持有,此時,通過fg是拿不到job的。

[aaa@~/test]$ (./a.out 28883 2>

&1 > a.log &

)[aaa@~/test]$ ps -ef

uid pid ppid c stime tty time cmd

aaa 18132 1 0 19:00 pts/1 00:00:00 ./a.out 28883

[aaa@~/test]$ fg

-bash: fg: current: no such job

另外還提到了disown -h %1修改已經啟動job的方法,這個方法實驗和hohup效果類似,不再敘述。

參考:這個暫未做測試,但是系統中有許多服務在後台執行,所以服務這種方式肯定會是可行的。

後續有空時把這中情況的測試補充上來。

(owed by: 春夜喜雨

讓程式在後台執行 nohup使用

在linux操作時,我們想讓某個程式在後台執行,例如訓練模型。我們可以通過使用nohup命令,並將輸出記錄在文件中。例如,我建立了乙個 run.sh 的指令碼 vi run.sh 在指令碼中寫入你想執行的程式指令碼,esc,然後ctrl 輸入 wq 儲存退出 python train.py 有時候需...

如何讓程式真正地在後台執行?

如何實現乙個守護程序?如何讓程式在後台執行?這是後台開發面試常問的一道題,那麼守護程序到底是什麼?又該如何實現?守護程序通常生存期長,很多是在系統啟動時啟動,系統退出時才關閉。它們的特點通常沒有控制終端,後台執行。有人可能會會心一笑,後台執行程式,我知道呀。還有兩種方式呢 hello 看,多麼簡單。...

使程式在後台執行

背景 啟動了程式後,xshell一直列印程式執行的內容,此時如果ctrl z或ctrl c的話,是會使程式掛起,即不再執行。那怎麼辦?此時強制關閉xshell也不行,程式也會掛起,難道xshell一直開著?那也會有斷線的時候,那如何讓程式在後台執行呢?1 輸入命令 nohup 你的shell命令 2...