今天在Xshell 終端上運行一個程序A,然后關閉Xshell 終端,然后進入Xshell后用ps -ef | grep 進程名 發現進程A已經掛了。后來上網查找了一些資料,原因shell開啟一個進程,當shell終端關閉后,它會向所有由終端開啟的進程發起一個hangup信號,所有接些信號的進程退出,如果我們要在退出shell的時候繼續運行進程,則需要使用nohup忽略hangup信號,或者 setsid將將父進程設為init進程(進程號為1)。也就是讓進程在后台運行
用如下命令:
nohup ./程序名 > /dev/null 2>&1
例如:
nohup ./voicecode > /dev/null 2>&1
參考資料:
http://blog.sina.com.cn/s/blog_412ec72c0100y3wp.html
http://blog.sina.com.cn/s/blog_5aee9eaf0100y5pg.html
http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
http://www.cnblogs.com/iLinuxC/archive/2012/05/23/2514750.html