linux直接執行乙個過程。電流指令結束後。或者關閉掉shell形成過程將結束。
如何在後台執行的處理
辦法1採用nohup命令,nohup命令本身的意思no hung up他說,他們將不會收到shell關閉,封閉該過程。
使用nohup command &使得命令能夠在後台執行。通過job -l能夠看到後台執行的情況。
這裡比較坑的地方是假設直接關閉掉shell,shell也會關閉掉這個後台的命令,退出shell須要先通過命令 exit然後在關閉才幹在後台執行
方法2利用指令碼在後台執行,比方我要執行 mongod --dbpath="abc"啟動mongodb。
先寫乙個指令碼test.sh。裡面內容能夠是
#!/bin/sh
mongod --dbpath="abc"啟動mongodb &
#這裡&非常重要。否則無法退出當前命令。
然後直接執行test.sh。這個時候mongodb已經啟動並執行了關閉shell也不會停止。問題來了,為什麼會這樣,網路上有人解釋為
使用test.sh執行會馬上結束,mongodb通過&號表示在後台執行。test.sh執行的父程序是當前shell進行。(檢視shell程序號能夠通過echo $$檢視),test.sh執行結束,可是mongod卻不會執行結束,test.sh會非常負責的將mongod託管給系統init程序。通過ps -ef|grep mongod能夠看到mongod的父程序是1。
方法3通過setsid直接將mongod的父程序設定為init程序
setsid mongod --dbpath="abc"啟動mongodb ,檢視mongod程序發現其父程序是1.
參考文獻:
Linux程序後台執行
學習snmp協議,寫了乙個用sysuptime.0獲取系統自開機到現在的時間的小php程式,如下 define bit 8 g 0 idd mysql connect localhost n1417 123456 or die could not connect mysql error mysql ...
Linux中如何讓程序在後台執行
在linux中,如果要讓程序在後台執行,一般情況下,我們在命令後面加上 即可,實際上,這樣是將命令放入到乙個作業佇列中了 test.sh 1 17208 jobs l 1 17208 running test.sh 對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl z暫停已經執行的程...
Linux中如何讓程序在後台執行
在linux中,如果要讓程序在後台執行,一般情況下,我們在命令後面加上 即可,實際上,這樣是將命令放入到乙個作業佇列中了 test.sh 1 17208 jobs l 1 17208 running test.sh 對於已經在前台執行的命令,也可以重新放到後台執行,首先按ctrl z暫停已經執行的程...