linux程序不依賴shell終端
這兩天遇到一個讓程序后臺運行的問題,因為基礎(chǔ)知識薄弱,出現(xiàn)問題后發(fā)現(xiàn)自己沒有找到問題所存在的根本原因,通過終端adb連接開發(fā)板,然后運行c程序連接服務(wù)器,然后讓開發(fā)板休眠,斷開usb后使其進入休眠模式.但是發(fā)現(xiàn)一拔出來usb,服務(wù)器就會提示掉線,我理解成了因為休眠導致的斷開服務(wù)器.然后經(jīng)過師傅的解答以及自己做了個實驗,發(fā)現(xiàn)問題并不是休眠的問題,而是因為終端關(guān)閉,導致程序結(jié)束,然后導致的與服務(wù)器連接斷開.發(fā)現(xiàn)問題以后就開始網(wǎng)上查找相應(yīng)的解決方案.
還有一種應(yīng)用場景是ssh連接到服務(wù)器以后,需要執(zhí)行長時間的任務(wù),也可以用這種方法.
解決方法運行命令后面加&
./yuanban &
然后可以通過jobs查看所有的后臺運行的任務(wù)
kill %n
可以殺死某個任務(wù).注:n是通過jobs查看的編號,不是PID號.
fg %n
后臺的程序繼續(xù)返回到前臺(當前的終端)來.
ctrl+z 是暫停任務(wù),并沒有結(jié)束,仍然在進程中,只是維持掛起的一個狀態(tài),通過fg命令重新啟動前臺被中斷的任務(wù),bg命令把被中斷的任務(wù)放在后臺執(zhí)行.
ctrl+c 是終止任務(wù),強制中斷結(jié)束.
https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/
https://www.cnblogs.com/itech/archive/2012/04/19/2457499.html