You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

强制终止SSH服务器上的Python脚本时,如何让其输出写入txt文件?

解决方法:先刷缓存再终止进程

这问题我碰到过好几次了,核心原因是Python的输出缓冲机制在后台运行时的特殊表现——默认情况下,当输出目标不是交互式终端(比如你的output.txt文件),Python会启用块缓冲,不会实时把内容写到文件里,所以你才会看到output.txt一直是0字节。

下面是具体的解决步骤:

1. 定位脚本的进程ID

首先得找到正在运行的python_script.py进程,用这两个命令都可以:

# 查看详细进程信息,注意过滤掉grep本身的进程
ps aux | grep python_script.py | grep -v grep
# 或者更简洁的方式直接获取PID
pgrep -f python_script.py

输出里的数字就是进程ID(PID),记下来备用。

2. 强制刷新输出缓冲区

给这个进程发送SIGUSR1信号——Python会专门响应这个信号,立刻把所有缓存的输出写入到目标文件:

kill -USR1 <你的进程PID>

等个1-2秒,你可以用ls -lh output.txt或者cat output.txt检查一下,此时文件应该已经有内容了。

3. 终止进程

确认输出已经写入后,就可以正常终止进程了:

kill <你的进程PID>

如果进程没响应这个温和的终止信号,再用强制终止的信号:

kill -9 <你的进程PID>

下次避免这个问题的小技巧

如果你以后不想再碰到这种情况,运行脚本时加上-u参数,直接禁用Python的输出缓冲,这样输出会实时写入文件:

nohup python3 -u python_script.py >> output.txt &

内容的提问来源于stack exchange,提问作者Samuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:58:23