Linux 后台运行程序
1、寫在前面
由于工作中未使用過 Linux 操作系統,學習過的 Linux 相關的知識早已變得支離破碎。現在需要將智能機器人項目后臺運行在 CentOS 上,不得不再走一遍 Linux 這條道。
對于 Linux 操作系統運行的應用程序,默認情況下都是前臺運行( Forceground ),這會獨占命令窗口,當退出命令窗口或者 Shell 會話時,運行的程序都會隨之被中斷退出,就像默默執行了一次 Ctrl + C 指令一樣,這個機制不適合運行項目。
對此,我四處搜尋,找到一種最適合的解決方案,旨在解決能在 Linux 操作系統上后臺運行程序,同時能方便管理:前后臺切換、查看、掛起和繼續。
2、可行的解決方案
2.1、方案一:使用 & 符號
2.1.1、使用示例
& 符號的用法很簡單,就是在執行的命令末尾加上 &符號,該命令開啟的進程即可在后臺運行(background job),即成為“守護進程(daemon)”。
$ java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar &用這種方式執行命令,命令會被放到后臺運行,當前命令窗口不會被占用,可繼續執行其他命令。& 符號通常用在比較耗時的命令上,如拷貝大文件。
2.1.2、前后臺任務管理
通過命令 jobs 顯示當前終端正在運行的進程,包括前臺運行和后臺運行的進程。它對每個正在執行中的進程任務分配了一個序號(這個序號不是進程 ID),可以使用這些序號來引用各個進程任務。
$ jobs [1]+ Running java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar &后臺任務可能有多個,每個任務有不同的標識,可以通過任務序號來指定。
# 執行 bg 命令,傳遞對應的 Job 的序號: $ fg 1**注意:**放到前臺運行的任務,使用組合鍵 Ctrl + C 可以中斷。
2.1.3、特點總結
2.2、方案二:nohup 命令
2.2.1、使用示例
nohup 英文全稱 no hang up(不掛起),用于在系統后臺不掛斷地運行命令,退出終端不會影響程序的運行。nohup 命令,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下,如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。(文末有傳送帶)
在使用上,nohup 命令很簡單,只需要放在需要執行的命令之前即可:
2.2.2、特點總結
2.3、終極方案:nohup + &
在真正的項目中,應該使用命令 nohup 結合符號 & 使用,可以同時免疫組合鍵 Ctrl + C 和 終端關閉(即 Session 結束),能做到讓任務永久在 后臺運行。
2.3.1、使用示例
# 執行命令 $ nohup java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar &2.3.2、常用的任務管理命令
3、參考資料
總結
以上是生活随笔為你收集整理的Linux 后台运行程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021 各式免費 sorce code
- 下一篇: linux 其他常用命令