日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 后台运行程序

發布時間:2023/12/31 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 &
  • 將前臺任務放到后臺
  • # 第一步:使用組合鍵 Ctrl + Z 將當前任務暫停 [1]+ Stopped java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar# 第二步:執行 bg 命令,當前任務會切換到后臺,并從暫定位置繼續執行 $ bg 1 [1]+ java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar &
  • 將后臺任務放到前臺
  • 后臺任務可能有多個,每個任務有不同的標識,可以通過任務序號來指定。

    # 執行 bg 命令,傳遞對應的 Job 的序號: $ fg 1

    **注意:**放到前臺運行的任務,使用組合鍵 Ctrl + C 可以中斷。

    2.1.3、特點總結

  • 此方式開啟的后臺任務,不會被指令 Ctrl + C 指令中斷,切結果會輸出到終端;
  • 如果終端斷網或者關閉了終端,后臺任務會被中斷,進程退出;
  • 此方案更適合配合耗時命令使用,不適合運行后臺項目;
  • 雖然能做到了“后臺運行”,但是沒有做到真正的后臺,即關閉中斷也能繼續運行;
  • 2.2、方案二:nohup 命令

    2.2.1、使用示例

    nohup 英文全稱 no hang up(不掛起),用于在系統后臺不掛斷地運行命令,退出終端不會影響程序的運行。nohup 命令,在默認情況下(非重定向時),會輸出一個名叫 nohup.out 的文件到當前目錄下,如果當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。(文末有傳送帶)
    在使用上,nohup 命令很簡單,只需要放在需要執行的命令之前即可:

    # 執行命令 $ nohup java -jar /home/QQChat/qq-bot-1.0-SNAPSHOT-execute.jar# 運行成功的標志 nohup: ignoring input and appending output to 'nohup.out'

    2.2.2、特點總結

  • 此方案解決了即使終端關閉,進程也能繼續運行的問題;
  • 但不能免疫使用組合鍵 Ctrl + C 關閉程序;
  • 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、常用的任務管理命令

  • jobs :查看任務,返回任務編號n和進程號
  • bg %n :將編號為n的任務轉后臺運行
  • fg %n :將編號為n的任務轉前臺運行
  • ctrl+z :掛起當前任務
  • ctrl+c :結束當前任務
  • 3、參考資料

  • Linux 中的 &
  • [阮一峰]Linux 守護進程的啟動方法 - 走看看
  • Linux nohup 命令 | 菜鳥教程
  • 一分鐘了解nohup和&的功效
  • nohup &的用法、進程查看以及終止 - 聲聲慢43 - 博客園
  • 總結

    以上是生活随笔為你收集整理的Linux 后台运行程序的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。