Linux讓程序在后臺(tái)運(yùn)行的四種方法
一、第一種方法(加“&”符號(hào))
如果想讓程序在后臺(tái)運(yùn)行,執(zhí)行程序的時(shí)候,命令的最后面加“&”符號(hào)。
# 執(zhí)行文件 ./test.py & # 查看是否在后臺(tái)運(yùn)行 ps -ef|grep test # 后臺(tái)的程序 需要關(guān)閉時(shí),需要kill命令停止 killall [程序名]
注意:這種方法,查看運(yùn)行日志很不方便(不推薦)
二、第二種方法(nohup命令)
# 不推薦使用 nohup python -u test.py > test.log 2>&1 &
參數(shù)說明:
test.py: 你需要后臺(tái)運(yùn)行的程序
>: 日志文件追加到文件中
test.log: 運(yùn)行的日志,或你的文件的輸出內(nèi)容
& 是一個(gè)描述符,如果1或2前不加&,會(huì)被當(dāng)成一個(gè)普通文件。
1>&2 意思是把標(biāo)準(zhǔn)輸出重定向到標(biāo)準(zhǔn)錯(cuò)誤.
2>&1 意思是把標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸出。
&>filename 意思是把標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出都重定向到文件filename中
# 不推薦使用 nohup python run.py & # 1、原因:在run.py的目錄默認(rèn)直接生成了nohup.out文件 # 2、原因:有些系統(tǒng)無法執(zhí)行
# 權(quán)限不足時(shí) 加sudo nohup sudo python -u test.py > test.log2>&1 &
三、第三種方法(screen命令)
Screen是一個(gè)全屏窗口管理器,
它在多個(gè)進(jìn)程(通常是交互式shell)之間多路傳輸物理終端。
# centos安裝screen yum install -y screen
# 在Ubuntu上安裝并使用screen sudo apt update # 更新包列表 sudo apt install screen # 安裝screen工具
# 創(chuàng)建一個(gè)新的窗口 screen -S test # 進(jìn)入窗口后 執(zhí)行文件 python test.py # 退出當(dāng)前窗口 ctrl+a+d (方法1:保留當(dāng)前窗口) screen -d (方法2:保留當(dāng)前窗口) exit (方法3:退出程序,并關(guān)閉窗口) # 查看窗口 screen -ls # 重新連接窗口 screen -r id或窗口名稱 # 示例: screen -r 344 screen -r test
快捷鍵:
Ctrl+a c :創(chuàng)建窗口
Ctrl+a w :窗口列表Ctrl+a n :下一個(gè)窗口
Ctrl+a p :上一個(gè)窗口Ctrl+a 0-9 :在第0個(gè)窗口和第9個(gè)窗口之間切換
Ctrl+a K(大寫) :關(guān)閉當(dāng)前窗口,并且切換到下一個(gè)窗口
(當(dāng)退出最后一個(gè)窗口時(shí),該終端自動(dòng)終止,并且退回到原始shell狀態(tài))exit :關(guān)閉當(dāng)前窗口,并且切換到下一個(gè)窗口
(當(dāng)退出最后一個(gè)窗口時(shí),該終端自動(dòng)終止,并且退回到原始shell狀態(tài))Ctrl+a d :退出當(dāng)前終端,返回加載screen前的shell命令狀態(tài)
四、第四種方法(systemctl命令)
詳情請(qǐng)看:Linux命令之systemctl用法詳解_linux shell_腳本之家 (jb51.net)
因?yàn)閟ystemctl比較復(fù)雜,所以這里貼上鏈接
注意:systemctl設(shè)置好之后,可以一勞永逸!
五、總結(jié)
使用推薦
第一種方法不推薦使用
第二種方法——在需要查看日志的情況下,建議使用(無需在關(guān)閉的那種)
第三種方法——在開啟后,還需要關(guān)閉或還需要輸入一些命令的時(shí)候下(推薦)
第四種方法——雖然需要學(xué)習(xí)的時(shí)間比前面幾種長,但是學(xué)會(huì)之后,會(huì)很方便
六、實(shí)用操作(重點(diǎn))
因?yàn)橐陨蠁蝹€(gè)操作,都會(huì)一些弊端
1、如果讓進(jìn)程在后臺(tái)運(yùn)行,并輸出日志(nohup命令),就不方便手動(dòng)停止進(jìn)程(需要用ps命令查看進(jìn)程)
2、如果讓進(jìn)程在后臺(tái)運(yùn)行,并方便停止(screen命令),就不方便查看程序輸出的日志
因此,我們可以使用組合技!(下面有例子)
1、安裝screen
# 在Ubuntu上安裝并使用screen sudo apt update # 更新包列表 sudo apt install screen # 安裝screen工具
# 安裝screen yum install -y screen
2、新建窗口
# 創(chuàng)建一個(gè)新的窗口 screen -S test
3、執(zhí)行文件
# 進(jìn)入窗口后 執(zhí)行文件 python test.py > output.log 2>&1
4、退出該窗口
# 退出當(dāng)前窗口 ctrl+a+d (方法1:保留當(dāng)前窗口) screen -d (方法2:保留當(dāng)前窗口)
5、查看程序輸出文件(output.log)
6、停止程序
# 1、重新連接窗口 screen -r id或窗口名稱 # 示例: screen -r 344 screen -r test # 2、按 Ctrl + C 停止程序運(yùn)行
實(shí)在不行,就查看程序的運(yùn)行狀態(tài),也可以通過 ps
命令來查看程序是否在運(yùn)行
以上就是Linux讓程序在后臺(tái)運(yùn)行的四種方法的詳細(xì)內(nèi)容,更多關(guān)于Linux程序后臺(tái)運(yùn)行的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
centos系統(tǒng)為php安裝memcached擴(kuò)展步驟
這篇文章主要介紹了centos系統(tǒng)為php安裝memcached擴(kuò)展的步驟,大家參考使用吧2014-01-01詳解安裝Ubuntu Linux系統(tǒng)時(shí)硬盤分區(qū)最合理的方法
這篇文章主要介紹了詳解安裝Ubuntu Linux系統(tǒng)時(shí)硬盤分區(qū)最合理的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05apache的AllowOverride以及Options使用詳解
通常利用Apache的rewrite模塊對(duì) URL 進(jìn)行重寫的時(shí)候, rewrite規(guī)則會(huì)寫在 .htaccess 文件里。但要使 apache 能夠正常的讀取.htaccess 文件的內(nèi)容,就必須對(duì).htaccess 所在目錄進(jìn)行配置2012-11-11Ubuntu18.04.2下安裝 RTX2080 Nvidia顯卡驅(qū)動(dòng)的方法
這篇文章主要介紹了Ubuntu18.04.2下安裝 RTX2080 Nvidia顯卡驅(qū)動(dòng)的方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07linux 配置本地yum源,配置國內(nèi)yum源,配置epel源的步驟
這篇文章主要介紹了linux 配置本地yum源,配置國內(nèi)yum源,配置epel源的步驟,幫助大家更好的配置服務(wù)器,感興趣的朋友可以了解下2020-12-12