[linux命令] 如何在用戶終端退出後,不掛起或退出用戶正在運行的程序

咱們常常用ssh鏈接遠程linux服務器進行管理和運行程序等,咱們會發現,當咱們把終端界面退出後,咱們經過這個終端執行的程序,無論是在前臺運行,仍是已經經過&掛在了後臺運行的程序,都會由於在退出終端的過程當中,發出的SIGHUP信號而退出,有時候咱們但願咱們即便是退出了終端,某個程序也須要一直運行下去,那麼咱們能夠採起如下兩種方法。html

使用tmux

若是咱們有服務器的root權限,咱們能夠安裝tmux,命令如:
sudo apt-get install tmux
安裝完以後,咱們須要在tmux下運行某個程序,好比:linux

tmux new -s your_envs
./program.out & # 運行某個程序並把它掛在後臺,其實不掛在後臺也行,不影響咱們須要實現的功能
# 這個時候即便是退出了終端,咱們的程序仍然在運行着 

接下來即使是你退出了終端,也能夠再次回到這個環境,命令如:web

tmux a -t your_envs

經過命令tmux ls能夠查看已存在的環境。
不過這個要求咱們有服務器的root權限,在某些場合咱們難以得到,所以咱們有另個解決方法。shell

使用nohup命令

nohup的意思是no hang up也就是不掛起的意思,其後可加任何命令command,使得你退出終端後,這個命令也不會由於SIGHUP信號而掛起。若是你正在運行一個進程,並且你以爲在退出賬戶時該進程還不會結束,那麼可使用nohup命令。該命令能夠在你退出賬戶/關閉終端以後繼續運行相應的進程。 這個命令詳情如[1]:服務器

nohup command > myout.file 2>&1 &   
# 咱們程序command的輸出若是在不指定特定的out文件的狀況下,
# 在缺省狀況下該做業的全部輸出都被重定向到一個名爲nohup.out的文件中的,
# 若是咱們須要指定特定的文件保存其輸出結果,那麼如上命令,重定向到`myout.file`中

其中的2>&1看起來比較奇怪,其實意思是是將標準錯誤(2)重定向到標準輸出(&1),標準輸出(&1)再被重定向輸入到myout.file文件中,這裏的數字表示爲:ssh

0 – stdin (standard input),
1 – stdout (standard output),
2 – stderr (standard error)

而命令最後的&就是掛在後臺運行的意思。svg

Updatescreen命令相似於tmux一樣能夠實現相似的功能。spa


Reference

[1]. https://www.cnblogs.com/jinxiao-pu/p/9131057.htmlcode

相關文章
相關標籤/搜索