VPS 脚本不中断运行教程:Linux screen 保持后台执行与日志保存

简介

在使用 VPS 执行脚本进行测速、UnixBench 测试或其他长时间任务时,常常遇到一个问题——SSH 连接一旦断开,正在运行的脚本会被中断,导致任务失败。这时,如何确保 VPS 脚本不中断运行,即使 SSH 会话断开,也能保持任务继续进行呢?在本教程中,我们将详细介绍如何使用 Linux screen 工具 实现 VPS 脚本后台运行,确保任务不中断,并能够方便地保存运行日志。

-

screen 工具的作用

screen 是 Linux 下的一个终端多路复用工具,可以让你:

  • 后台运行任务,即使 SSH 断线也不影响。
  • 重新连接 到之前的任务会话。
  • 保存日志,方便任务完成后查看结果。
  • 同时运行多个脚本会话,互不干扰。

 

为什么 SSH 断开会导致脚本中断?

当你通过 SSH 连接到 VPS 时,所有进程都依赖于这个会话。一旦 SSH 连接断开,系统会自动关闭当前会话内的所有进程,包括正在运行的脚本。这是导致你在运行如 测速脚本UnixBench 测试等任务时,断开 SSH 后任务丢失的根本原因。

 

使用 Linux screen 工具保持脚本不中断

screen 是 Linux 下的一个终端多路复用工具,能够帮助你解决 SSH 会话断开导致脚本中断的问题。通过 screen,你可以让脚本在后台持续运行,即使 SSH 断开,脚本也不会停止。并且,screen 还可以保存日志,帮助你事后查看任务的执行结果。

 

安装 Linux screen 工具

安装命令如下:

# 对于 Debian/Ubuntu 系
sudo apt update && sudo apt install -y screen

# 对于 CentOS/RHEL 系
sudo yum install -y screen

 

一键后台运行脚本(防断线 + 日志保存)

  • command -v screen >/dev/null || (apt update && apt install -y screen || yum install -y screen):检查 screen 是否安装,如果没有安装,则自动安装。
  • screen -S speedtest -dm:创建一个名为 speedtest 的后台 screen 会话,-dm 参数让它在后台运行。
  • tee speedtest.log:将输出同时保存到 speedtest.log 日志文件中。

以 VPS 测速脚本格式为例子,使用screen一键后台运行脚本时替换这里   "curl -LsO bench.monster/speedtest.sh && bash speedtest.sh -as | tee speedtest.log"  ,换成你的脚本以及保存的日志文件名

bash -c 'command -v screen >/dev/null || (apt update && apt install -y screen || yum install -y screen); screen -S speedtest -dm bash -c "curl -LsO bench.monster/speedtest.sh && bash speedtest.sh -as | tee speedtest.log"'

 

查看和管理后台会话

使用下方命令来管理screen

# 查看正在运行的 screen 会话
screen -ls

# 重新进入某个会话(例如 speedtest)
screen -r speedtest

# 退出会话但保留任务
Ctrl + A  然后按 D

# 结束某个会话
screen -X -S 会话名 quit
THE END