商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Linux服务器后台运行程序教程(含Python与.sh脚本实战)

Linux服务器后台运行程序教程(含Python与.sh脚本实战)

  发布于2026-06-02 阅读(0)

扫一扫,手机访问

前言

在正式动手跑 .sh 脚本之前,先搞定一个最容易踩坑的小前提:如果直接执行脚本时撞上“权限拒绝 (Permission denied)”,别慌——只需用 chmod +x 你的脚本名.sh 给它加个可执行权限就行。这步做完,后面的路子才走得通。

Linux服务器后台运行程序教程(含Python与.sh脚本实战)

方法一:使用 nohup(适合跑耗时较长的单次任务,一键提交不需要看实时界面)

核心思路非常简单:在命令前面加个 nohup,尾巴上挂上 > 日志名.log 2>&1 & 就成了。这套模板不管跑 Python 还是 Shell 脚本,统统适用,省心省力。

  1. 启动后台任务

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(需提前赋予权限):nohup ./run_experiments.sh > exp_output.log 2>&1 &
  1. 查看运行进度

指令:tail -f [日志文件名].log
例子:tail -f train_output.log
说明:它会实时刷新代码里的输出,就像在终端里看直播一样。想退出查看画面?按 Ctrl + C 就行——放心,这绝对不会影响到后台正在跑的程序。

  1. 终止后台程序

先查进程号:ps -ef | grep 你的脚本名,然后强杀:kill -9 [进程号]
举例:输入 ps -ef | grep run_experiments 查到进程号是 12345 后,直接 kill -9 12345 就能强制停掉任务。

方法二:使用 tmux(适合多任务并行、需要时常切回来看进度条或交互的开发环境)

核心思路是在服务器里建一个“虚拟房间”,在房间里正常跑代码就行。退出房间时代码依然在跑,下次进房间接着看,就像昨天没关过一样。

  1. 创建并进入一个新环境

指令:tmux new -s [给任务起个名字]
例子:tmux new -s track_eval
说明:输入后屏幕底部会出现一条绿色状态栏——恭喜,你已经进了安全屋。

  1. 在里面正常跑代码(Python 和 .sh 均可)

在这个环境里,完全不需要加 nohup,平时怎么跑现在就怎么跑。

Python 脚本例子:

python evaluate.py --dataset DRSet

.sh 脚本例子:

bash run_experiments.sh 或者直接 ./run_experiments.sh

  1. 把程序挂到后台(最关键的一步)

按住 Ctrlb 键(一起按下),松开手指,然后单独按字母 d 键。此时你会退回到最初的普通终端界面。即便你断开 SSH 连接、关机下班,刚才跑的 .py 或 .sh 脚本依然在服务器后台稳稳执行。

  1. 恢复之前的界面

指令:tmux a -t [任务名字]
例子:tmux a -t track_eval
第二天重新连上服务器后输入这个指令,就能瞬间回到昨天的界面,连进度条和报错信息都原封不动。等任务彻底结束,不再需要这个环境时,在里面输入 exit 就能彻底销毁它。

总结建议:

  • 如果已经写好了最终的训练脚本,只需要它默默跑出结果,用 nohup 最简单清爽,一条命令搞定。
  • 如果是日常需要反复调试框架、同时跑多个不同的实验对比,用 tmux 建立几个不同的窗口来管理会大幅提升效率——相当于给每个任务配了个专属的隔间,互不干扰,随时查看。
本文转载于:https://www.jb51.net/python/365021t39.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注