歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux如何後台運行進程

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.

參考文獻:http://www.cnblogs.com/lwm-1988/archive/2011/08/20/2147299.html

Copyright © Linux教程網 All Rights Reserved