Linux程式後臺執行實踐
通常我們在使用 時,會經常要把一個程式放到後臺執行,這時候就需要在程式的最後使用【&】符號,但是當直接關閉這個終端時,程式就會退出,下面我介紹5種方法,在關閉終端後程式還繼續執行。 |
首先要考慮一個問題,直接關閉終端為什麼後臺程式就退出了?那是因為直接關閉,終端會向當前環境啟動的後臺任務傳送SIGHUP訊號,讓執行的程式就掛起,那麼忽略SIGHUP就行啦。
最常用的 就是【nohup】,從名字就看出是否掛起執行 ,關閉終端或者退出某個賬號,程式也繼續保持執行狀態,同樣要配合【&】符號一起使用。
用法:nohup Command [ Arg … ] [ & ]
$ nohup sh test.sh & # 直接關閉當前終端,再開啟一個檢視 $ ps -few|grep test.sh
從上面的可以看出,我們執行的test.sh的父程式變成了【PID 1】.,由linux主程式接管。
nohup是忽略SIGHUP訊號,有沒其他的思路嗎?
setip命令可以重新開啟了會話,繼承了父程式組的ID,脫離了父程式的控制。從下圖可以看到,test.sh 的父程式已經是init 1,此時不管關閉還是退出終端,已經和後臺的程式沒有關係了。
$ setsid sh test.sh
setsid和nohup還有一個區別是,不需要使用&後臺符號。
使用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命令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,同樣完成了後臺程式的執行。
至此,我們完成了5種linux程式後臺執行的方法,同樣是不需要關心終端是否關閉,你還知道哪些linux後臺執行程式的方法?
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2721176/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux程式前臺-後臺執行Linux
- 讓.py程式後臺執行(Linux)Linux
- Linux後臺執行Linux
- Linux 下後臺執行和按照守護程式方式後臺執行的坑Linux
- Linux 後臺執行命令Linux
- linux命令後臺執行Linux
- linux後臺執行-nohupLinux
- 使用nohup命令讓linux程式後臺執行Linux
- 後臺執行以及保持程式在後臺長時間執行
- Linux:後臺執行程式Linux行程
- Linux jar包 後臺執行LinuxJAR
- Linux 命令的後臺執行Linux
- jenkins後臺程式執行Jenkins
- 如何在終端下以後臺模式執行Linux程式模式Linux
- Linux讓程式在後臺執行的三種方法Linux
- 將程式在後臺執行和殺掉後臺的程式
- Linux 後臺執行 PHP 指令碼LinuxPHP指令碼
- linux 後臺執行sql指令碼LinuxSQL指令碼
- [linux] 使用Screen後臺執行命令Linux
- Linux nohup:後臺不掛起命令(後臺執行命令)Linux
- 後臺執行
- 如何實現SSH斷開後 程式仍然在後臺執行
- 【Linux&Unix】使用nohup讓程式永遠後臺執行Linux
- Nohup命令讓Linux下的程式在後臺執行 - 轉Linux
- Linux 讓程式在後臺可靠執行的幾種方法Linux
- 【OS】Linux命令如何放到後臺執行Linux
- linux後臺執行和關閉、檢視後臺任務Linux
- XYHCMS 3.6 後臺程式碼執行漏洞
- 用nohup命令程式在後臺執行
- Linux 技巧:讓程式在後臺可靠執行的幾種方法Linux
- Linux 下讓程式在後臺可靠執行的幾種方法Linux
- shell後臺執行
- 後臺執行MongoDBMongoDB
- linux後臺執行命令:&與nohup的用法Linux
- Linux scp 後臺執行傳輸檔案Linux
- Linux後臺執行指令碼命令之nohupLinux指令碼
- MSSQL資料庫後臺程式(執行緒)SQL資料庫執行緒
- 使用nohup讓程式永遠後臺執行