Linux服務(wù)器后臺(tái)運(yùn)行程序教程(含Python與.sh腳本實(shí)戰(zhàn))
前言
在運(yùn)行 .sh 腳本之前的重要前提:如果直接運(yùn)行 .sh 腳本時(shí)遇到“權(quán)限拒絕 (Permission denied)”的報(bào)錯(cuò),需要先給腳本加上可執(zhí)行權(quán)限。指令是:chmod +x 你的腳本名.sh
方法一:使用 nohup(適合跑耗時(shí)較長(zhǎng)的單次任務(wù),一鍵提交不需要看實(shí)時(shí)界面)
核心邏輯:在運(yùn)行命令前加 nohup,在末尾加 > 日志名.log 2>&1 &。無論是跑 Python 還是 Shell 腳本,這套模板完全通用。
- 啟動(dòng)后臺(tái)任務(wù)
Python 腳本例子:
nohup python train_reamot.py --model qwen2.5-vl --batch_size 4 > train_output.log 2>&1 &
.sh 腳本例子(兩種寫法皆可):
寫法 A(推薦):nohup bash run_experiments.sh > exp_output.log 2>&1 &
寫法 B(需提前賦予權(quán)限):nohup ./run_experiments.sh > exp_output.log 2>&1 &
- 查看運(yùn)行進(jìn)度
指令:tail -f [日志文件名].log
例子:tail -f train_output.log
說明:這會(huì)實(shí)時(shí)刷新并顯示代碼里的輸出。想退出查看畫面,按 Ctrl + C 即可(請(qǐng)放心,這絕對(duì)不會(huì)停掉后臺(tái)正在跑的程序)。 - 終止后臺(tái)程序
指令:先查進(jìn)程號(hào) ps -ef | grep 你的腳本名,然后強(qiáng)殺 kill -9 [進(jìn)程號(hào)]。
例子:輸入ps -ef | grep run_experiments查到進(jìn)程號(hào)是 12345 后,輸入 kill -9 12345 即可強(qiáng)制停止任務(wù)。
方法二:使用 tmux(適合多任務(wù)并行、需要時(shí)常切回來看進(jìn)度條或交互的開發(fā)環(huán)境)
核心邏輯:在服務(wù)器里建一個(gè)“虛擬房間”,在房間里就像平時(shí)一樣跑代碼。退出房間時(shí)代碼依然在跑,下次進(jìn)房間接著看。
- 創(chuàng)建并進(jìn)入一個(gè)新環(huán)境
指令:tmux new -s [給任務(wù)起個(gè)名字]
例子:tmux new -s track_eval
說明:輸入后,屏幕底部會(huì)出現(xiàn)一條綠色狀態(tài)欄,說明你已經(jīng)進(jìn)入了安全環(huán)境。 - 在里面正常跑代碼(Python 和 .sh 均可)
在這個(gè)環(huán)境里,你不需要加 nohup,平常怎么跑代碼現(xiàn)在就怎么跑。
Python 腳本例子:
python evaluate.py --dataset DRSet
.sh 腳本例子:bash run_experiments.sh 或者直接輸入 ./run_experiments.sh
- 把程序掛到后臺(tái)(最關(guān)鍵的一步)
指令:按住鍵盤上的 Ctrl 和 b 鍵,松開手指,然后再單獨(dú)按字母 d 鍵。
說明:此時(shí)你會(huì)退回到最初的普通終端界面。即使你現(xiàn)在斷開 SSH 連接、關(guān)機(jī)下班,剛才運(yùn)行的 .py 或 .sh 腳本依然在服務(wù)器后臺(tái)穩(wěn)穩(wěn)執(zhí)行。 - 恢復(fù)之前的界面
指令:tmux a -t [任務(wù)名字]
例子:tmux a -t track_eval
說明:第二天重新連上服務(wù)器后輸入該指令,就能瞬間回到昨天的界面,進(jìn)度條和打印出來的報(bào)錯(cuò)信息都在。當(dāng)這個(gè)任務(wù)徹底結(jié)束,你不再需要這個(gè)環(huán)境時(shí),在界面里輸入 exit 即可徹底銷毀它。
總結(jié)建議:
- 如果你已經(jīng)寫好了最終的訓(xùn)練腳本,只需要它默默跑出結(jié)果,用 nohup 最簡(jiǎn)單清爽。
- 如果是日常需要反復(fù)調(diào)試框架、同時(shí)跑多個(gè)不同的實(shí)驗(yàn)對(duì)比,用 tmux 建立幾個(gè)不同的窗口來管理會(huì)大幅提升效率。
到此這篇關(guān)于Python與.sh腳本后臺(tái)運(yùn)行Linux服務(wù)器的文章就介紹到這了,更多相關(guān)Python與.sh后臺(tái)運(yùn)行Linux服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Mediapipe+Opencv實(shí)現(xiàn)手勢(shì)檢測(cè)功能
mediaPipe,他就是一個(gè)集成好的包括人臉關(guān)鍵位點(diǎn)識(shí)別、身體關(guān)鍵位點(diǎn)識(shí)別、手部關(guān)鍵位點(diǎn)識(shí)別的一個(gè)包或者庫,直接調(diào)用就能夠得到它的關(guān)鍵位點(diǎn)信息,本文給大家介紹Mediapipe+Opencv實(shí)現(xiàn)手勢(shì)檢測(cè)功能,感興趣的朋友一起看看吧2022-01-01
Python只用40行代碼編寫的計(jì)算器實(shí)例
這篇文章主要介紹了Python只用40行代碼編寫的計(jì)算器,結(jié)合完整實(shí)例形式分析了Python計(jì)算器的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
在Python中調(diào)用Ping命令,批量IP的方法
今天小編就為大家分享一篇在Python中調(diào)用Ping命令,批量IP的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01

