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