這篇文章主要介紹Linux中如何關閉終端或實現程序后臺運行,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
nohup
最常用的命令就是【nohup】,從名字就看出是否掛起運行命令,關閉終端或者退出某個賬號,進程也繼續保持運行狀態,同樣要配合【&】符號一起使用。
用法:nohup Command [ Arg … ] [ & ]

$ nohup sh test.sh & # 直接關閉當前終端,再打開一個查看 $ ps -few|grep test.sh
從上面的可以看出,我們運行的test.sh的父進程變成了【PID 1】.,由linux主進程接管。
setsid
nohup是忽略SIGHUP信號,有沒其他的思路嗎?
setip命令可以重新打開了會話,繼承了父進程組的ID,脫離了父進程的控制。從下圖可以看到,test.sh腳本的父進程已經是init 1,此時不管關閉還是退出終端,已經和后臺的程序沒有關系了。
$ setsid sh test.sh

setsid和nohup還有一個區別是,不需要使用&后臺符號。
exit
使用exit命令退出終端,我們的程序還是會繼續運行,這是為什么呢?
這是因為使用exit命令退出終端時不會向終端所屬任務發SIGHUP信號,是huponexit 配置項控制的,默認是off,可以使用shopt 命令查看。

[root@api ~]# shopt |grep huponexit huponexit off
將huponexit 配置成on,再次使用exit命令退出,所屬的任務就會跟隨退出。
[root@api ~]# shopt -s huponexit [root@api ~]# shopt |grep huponexit huponexit on
trap
trap命令linux內置的命令,接收到指定信號時將要采取的行動,后是要處理的信號名,常見的信號如下:

當一個腳本要后臺,同樣不希望終端退出而關閉程序,我們可以在的腳本中增加trap命令,來忽略SIGHUP信號(掛起進程)。
#!/bin/sh trap "" HUP while true;do date >> /root/test.txt sleep 1 done
Linux screen命令用于多重視窗管理程序,它可以創建一個終端,讓程序在里面運行
screen sh test.sh &

從示例可以看出,test腳本的父進程是screen終端進程,而screen終端的父進程PID1,同樣完成了后臺進程的運行。
以上是“Linux中如何關閉終端或實現程序后臺運行”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。