linux 下后台运行python脚本
这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号
1 | $ python / data / python / server.py >python.log &<br>说明:<br> 1 、 > 表示把标准输出(STDOUT)重定向到 那个文件,这里重定向到了python.log<br> 2 、 & 表示在后台执行脚本<br>这样可以到达目的,但是,我们退出shell窗口的时候,必须用exit命令来退出,否则,退出之后,该进程也会随着shell的消失而消失(退出、关闭) |
使用nohup(not hang up):
1 | $ nohup python / data / python / server.py > python.log3 2 >& 1 &<br>说明:<br> 1 、 1 是标准输出(STDOUT)的文件描述符, 2 是标准错误(STDERR)的文件描述符<br> 1 > python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件<br> 2 、 2 >& 1 表示把标准错误重定向到标准输出,这里& 1 表示标准输出<br> 为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。<br> 这就会导致 commond > python.log 2 > python.log 文件python.log被两次打开,而STDOUT和 STDERR将会竞争覆盖,这肯定不是我门想要的<br> 3 、好了,我们现在可以直接关闭shell窗口(我用的是SecureCRT,用的比较多的还有Xshell),而不用再输入exit这个命令来退出shell了<br><br>$ ps aux|grep python<br>tomener 1885 0.1 0.4 13120 4528 pts / 0 S 15 : 48 0 : 00 python / data / python / server.py<br>tomener 1887 0.0 0.0 5980 752 pts / 0 S + 15 : 48 0 : 00 grep python |
现在当我们直接关闭shell窗口,再连接上服务器,查看Python的进程,发现进程还在
但是,在python运行中却查看不到输出!
因为:
python的输出有缓冲,导致python.log3并不能够马上看到输出。
使用-u参数,使得python不启用缓冲。
所以改正命令,就可以正常使用了
1 | $ nohup python - u test.py > out.log 2 >& 1 & |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人