共計(jì) 1121 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
這篇文章主要介紹 Linux 中如何關(guān)閉終端或?qū)崿F(xiàn)程序后臺(tái)運(yùn)行,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
nohup
最常用的命令就是【nohup】,從名字就看出是否掛起運(yùn)行命令,關(guān)閉終端或者退出某個(gè)賬號,進(jìn)程也繼續(xù)保持運(yùn)行狀態(tài),同樣要配合【】符號一起使用。
用法:nohup Command [Arg hellip;] []
$ nohup sh test.sh # 直接關(guān)閉當(dāng)前終端,再打開一個(gè)查看 $ ps -few|grep test.sh
從上面的可以看出,我們運(yùn)行的 test.sh 的父進(jìn)程變成了【PID 1】.,由 linux 主進(jìn)程接管。
setsid
nohup 是忽略 SIGHUP 信號,有沒其他的思路嗎?
setip 命令可以重新打開了會(huì)話,繼承了父進(jìn)程組的 ID,脫離了父進(jìn)程的控制。從下圖可以看到,test.sh 腳本的父進(jìn)程已經(jīng)是 init 1,此時(shí)不管關(guān)閉還是退出終端,已經(jīng)和后臺(tái)的程序沒有關(guān)系了。
$ setsid sh test.sh
setsid 和 nohup 還有一個(gè)區(qū)別是,不需要使用 后臺(tái)符號。
exit
使用 exit 命令退出終端,我們的程序還是會(huì)繼續(xù)運(yùn)行,這是為什么呢?
這是因?yàn)槭褂?exit 命令退出終端時(shí)不會(huì)向終端所屬任務(wù)發(fā) SIGHUP 信號,是 huponexit 配置項(xiàng)控制的,默認(rèn)是 off,可以使用 shopt 命令查看。
[root@api ~]# shopt |grep huponexit huponexit off
將 huponexit 配置成 on,再次使用 exit 命令退出,所屬的任務(wù)就會(huì)跟隨退出。
[root@api ~]# shopt -s huponexit [root@api ~]# shopt |grep huponexit huponexit on
trap
trap 命令 linux 內(nèi)置的命令,接收到指定信號時(shí)將要采取的行動(dòng),后是要處理的信號名,常見的信號如下:
當(dāng)一個(gè)腳本要后臺(tái),同樣不希望終端退出而關(guān)閉程序,我們可以在的腳本中增加 trap 命令,來忽略 SIGHUP 信號 (掛起進(jìn)程)。
#!/bin/sh trap HUP while true;do date /root/test.txt sleep 1 done
Linux screen 命令用于多重視窗管理程序,它可以創(chuàng)建一個(gè)終端,讓程序在里面運(yùn)行
screen sh test.sh
從示例可以看出,test 腳本的父進(jìn)程是 screen 終端進(jìn)程,而 screen 終端的父進(jìn)程 PID1,同樣完成了后臺(tái)進(jìn)程的運(yùn)行。
以上是“Linux 中如何關(guān)閉終端或?qū)崿F(xiàn)程序后臺(tái)運(yùn)行”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!