如何停止远程Linux服务器虚拟环境中运行的Python脚本?
停止远程服务器上运行的Python脚本的方法
1. 前台运行时直接中断
如果启动脚本后你还保持着当前终端会话,直接按下 Ctrl + C 就能发送中断信号,终止脚本运行。
要是脚本被你放到后台运行(比如启动时加了&),可以先执行 fg 命令把它调回前台,再按 Ctrl + C 停止。
2. 通过进程ID(PID)强制终止
- 先找到目标Python进程的PID,执行命令:
输出结果里第二列的数字就是进程的PID。ps aux | grep main.py - 用
kill命令终止进程:
如果进程无响应,用强制终止命令:kill <PID>kill -9 <PID> - 也可以直接按脚本名批量终止:
注意:如果服务器上有同名脚本,确认后再执行,避免误杀其他进程。pkill -f main.py
3. 给脚本添加优雅退出机制
在Python脚本里加入信号处理逻辑,这样收到中断信号时能先清理资源再退出:
import signal import sys def handle_exit(sig, frame): print('开始清理资源并退出...') # 这里可以添加关闭文件、数据库连接等清理操作 sys.exit(0) # 绑定SIGINT信号(对应Ctrl + C) signal.signal(signal.SIGINT, handle_exit) # 你的原有脚本代码
4. 用进程管理工具长期管理脚本
如果脚本需要长期运行,推荐用screen/tmux或者systemd来管理:
方法一:使用screen
- 安装screen(以Debian/Ubuntu为例):
sudo apt install screen - 创建新会话:
screen -S script_session - 在会话内激活虚拟环境并启动脚本
- 临时断开会话按
Ctrl + A再按D - 重新连接会话:
之后按screen -r script_sessionCtrl + C就能停止脚本。
方法二:配置systemd服务
- 创建服务文件
/etc/systemd/system/python-script.service:[Unit] Description=自定义Python脚本服务 After=network.target [Service] User=你的用户名 WorkingDirectory=/脚本所在的绝对路径 ExecStart=/虚拟环境路径/bin/python main.py Restart=no [Install] WantedBy=multi-user.target - 重新加载systemd配置:
sudo systemctl daemon-reload - 启动服务:
sudo systemctl start python-script - 停止服务:
sudo systemctl stop python-script
内容的提问来源于stack exchange,提问作者franzi98
相关产品推荐
相关产品推荐

