服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-09-14 更新于 2026-09-14 简米科技 4,060 字 10 分钟阅读

在 VPS 上长期运行 Python 脚本挂机要注意什么,如何防止进程被杀掉?

导读在VPS上长期运行Python脚本挂机,核心就三件事:让进程活着、把资源管好、别被入侵, 很多脚本跑几天就消失,要么是SSH断开把前台进程带走了,要么是内存爆了被系统OOM Killer干掉,先把基础打牢,挂机才不用天天盯着,环境选择:VPS长期跑Python脚本用哪个Linux发行版更省心?Linux发行版选……

在VPS上长期运行Python脚本挂机,核心就三件事:让进程活着、把资源管好、别被入侵。 很多脚本跑几天就消失,要么是SSH断开把前台进程带走了,要么是内存爆了被系统OOM Killer干掉,先把基础打牢,挂机才不用天天盯着。

环境选择:VPS长期跑Python脚本用哪个Linux发行版更省心?

Linux发行版选择直接决定后续维护成本,CentOS 7已经停止维护,CentOS Stream的定位偏向滚动更新,不太适合挂机场景。Debian 12和Ubuntu 22.04/24.04 LTS是当前主流选择,软件源稳定、Python 3版本新、社区资料多。

  • Debian 12:资源占用低,适合1G内存的小鸡。
  • Ubuntu LTS:驱动和软件包更全,遇到问题搜到的解决方案更多。
  • 避免用Alpine作为Python挂机环境:musl libc对某些带C扩展的Python库兼容性差。

Python版本管理别直接污染系统环境,系统自带的Python 3通常够用,但强烈建议用venv创建独立虚拟环境,操作路径如下:

mkdir -p /opt/myapp
cd /opt/myapp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

这样做的好处是:升级某个依赖不会影响系统工具,重装系统后迁移也方便,如果不同脚本依赖冲突,可以分别建venv,行业共识认为,虚拟环境是Python部署的基本纪律。

进程保活:VPS挂机Python脚本为什么总被自动杀掉?

挂机脚本突然消失,十有八九是这三类原因:

  • SSH会话断开:直接在前台跑python app.py,SSH一断,进程收到SIGHUP信号就退出。
  • 系统OOM Killer:内存超限,Linux内核强制杀进程,dmesg里能看到Out of memory记录。
  • 脚本自己崩了:未捕获异常、网络超时、依赖库bug,导致Python解释器退出。

解决思路很清晰:让脚本脱离SSH会话、由系统托管、崩了自动拉起,首选systemd service,配置简单且开机自启。

创建/etc/systemd/system/myapp.service

[Unit]
Description=My Python App
After=network.target
[Service]
User=youruser
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/venv/bin/python /opt/myapp/app.py
Restart=always
RestartSec=5
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target

在 VPS 上长期运行 Python 脚本挂机要注意什么,如何防止进程被杀掉?

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo systemctl status myapp

查看实时日志用journalctl -u myapp -fRestart=always保证脚本崩溃后5秒自动重启,如果运行多个Python脚本,可以用supervisor,配置文件更灵活,适合批量管理,一个简单的supervisor配置示例:

[program:myapp]
command=/opt/myapp/venv/bin/python /opt/myapp/app.py
directory=/opt/myapp
autostart=true
autorestart=true
stderr_logfile=/var/log/myapp.err.log
stdout_logfile=/var/log/myapp.out.log

临时挂机用tmuxscreen,比nohup强在可以随时切回去看输出,但nohuptmux都不能开机自启,长期挂机还是交给systemd。

资源管控:1G内存VPS跑Python脚本够不够用?

很多人在选配置时纠结这个问题。1G内存的VPS跑普通Python脚本完全够用,前提是别让脚本无节制吃内存,一个简单的爬虫或API轮询脚本,常驻内存通常只有几十到几百MB,但如果用了Selenium、Playwright等浏览器自动化,1G内存会非常紧张,甚至直接触发OOM。

防止内存爆掉,有四个实操步骤:

  • 设置swap:1G内存的机器建议再挂1-2G swap,防止瞬时内存尖峰被杀进程。
  • 限制systemd资源:在unit文件里加MemoryMax=800M,超过限制系统会自动重启服务。
  • 监控内存占用:用htopfree -h定期查看,发现内存泄漏及时排查。
  • 日志轮转:Python脚本打印日志如果无限增长,磁盘会被写满,用logrotate管理日志文件。

创建swap的命令:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

在 VPS 上长期运行 Python 脚本挂机要注意什么,如何防止进程被杀掉?

logrotate配置示例,放在/etc/logrotate.d/myapp

/var/log/myapp/.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}

业内专家指出,长期挂机的VPS最大的敌人不是CPU性能,而是内存泄漏和磁盘写满,把这两块管好,配置再低也能稳定运行。

网络安全:长期挂机的VPS怎么防入侵?

挂机服务器一旦失守,轻则脚本被篡改,重则变成肉鸡对外发起攻击,安全配置要放在部署第一步。

  • SSH只允许密钥登录:编辑/etc/ssh/sshd_config,设置PasswordAuthentication no,然后重启sshd。
  • 修改默认SSH端口:把22改成高位端口,能过滤掉大部分自动化扫描。
  • 安装fail2ban:自动封禁暴力破解IP。sudo apt install fail2ban后基本不用额外配置,默认规则就能挡住大部分攻击。
  • 防火墙只留必要端口sudo ufw allow 你改后的SSH端口,其他端口按需开放。
  • Python依赖安全pip install前检查包名是否正确,避免typosquatting恶意包,定期运行pip list --outdated更新关键依赖。

脚本内部也要做好异常处理,不要把数据库密码、API密钥硬编码在代码里,用环境变量或.env文件,配合python-dotenv加载。

import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("API_KEY")

这样即使代码泄露,密钥也不会直接暴露。

成本与地域:便宜VPS挂机Python脚本怎么选不踩坑?

价格是挂机玩家最关心的因素之一。便宜VPS挂机Python脚本完全可行,但不要只看价格,超售严重的服务商会导致CPU不稳定、磁盘IO拉胯,国内外的选择也有明显差异:

在 VPS 上长期运行 Python 脚本挂机要注意什么,如何防止进程被杀掉?

对比项 国内VPS 国外VPS
备案要求 必须备案 无需备案
访问国内服务 延迟低 延迟高
访问境外API 可能受限 通畅
价格 轻量应用服务器较便宜,但带宽小 低价促销多,带宽较大

如果脚本需要调用OpenAI、Google、GitHub等境外接口,国外VPS更合适,如果脚本访问的是国内电商、社交平台接口,选国内云厂商的轻量应用服务器,配合备案更稳,地域上,国外VPS常用洛杉矶、圣何塞、法兰克福等节点,国内推荐上海、广州、北京。

据统计,多数挂机用户选择1核1G配置作为起步,选择服务商时,多关注网络口碑和退款政策,不要一次买三年,先按月测试稳定性,便宜的VPS促销款往往限制了CPU使用率,购买前仔细看商家标注的“公平使用政策”。

Q&A:VPS挂机Python脚本常见问题

VPS挂机Python脚本内存占用高怎么办?

先定位是内存泄漏还是业务本身需要,用htop按内存排序找到进程,再在Python脚本里用tracemalloc模块输出内存分配热点,如果确认是第三方库泄漏,考虑升级版本或换库,临时方案是配置systemd的MemoryMax限制上限,超限自动重启。

便宜VPS挂机Python脚本稳定吗?

稳定性取决于服务商超售程度和线路质量,低价VPS多数是共享CPU,高峰时段性能会下降,对于CPU占用不高的轮询类脚本,便宜VPS够用,对于需要长时间满载计算的任务,建议选CPU性能有保障的中端配置。

国内VPS跑Python脚本和国外VPS有什么区别?

主要区别在网络可达性和合规要求,国内VPS访问国内网站快,但访问境外服务可能受限,且必须完成ICP备案,国外VPS不需要备案,访问境外API方便,但访问国内服务延迟高,根据脚本要交互的目标服务所在地选择即可。

挂机这事,配置不怕低,就怕没人管,把进程交给systemd、把内存设上限、把SSH锁死,你的Python脚本就能在VPS上安安静静跑上几个月。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱