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