服务器上后台运行python程序

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 服务器上后台运行python程序

写在最前面

一直是pycharm运行服务器上代码,但存在问题:本机电脑休眠则程序停止运行。但深度学习代码一跑一整天,不小心关了几次后很难受

实习老师向我介绍了nohup,完美解决了这个问题

此外,在服务器上跑代码时,直接在命令行运行代码,常常遇到代码还没跑完却因为网络不稳定等异常终止的问题,所以可以通过nohup指令将代码后台执行,也便于同时运行多个程序。

还可以用它来下载torch那种,需要安装几个小时的包

参考:https://blog.csdn.net/huavhuahua/article/details/121145512

https://blog.csdn.net/m0_38024592/article/details/103336210

https://blog.csdn.net/Yonggie/article/details/120267134

环境

安装nohup

pip install nohup

直接run代码报错:nohup: failed to run command `python3‘: No such file or directory

注意:还是要切换到相应的conda环境下,然后cd到代码目录,最后run代码

代码示例

nohup后台执行,忽略输入并将输出保存到指定文件

nohup python -u myfile.py >> myresult.out 2>&1 &

其中,myfile.py为需要运行的程序,myresult.out为输出文件,myresult.out默认与.py文件保存在同一路径下。

python指令也可以换成其他程序执行指令来运行其他语言的程序,其余不变

nohup后台执行py文件,并将执行的正常日志和错误日志都输入到myresult2.out中

-u 参数,使得python不启用缓冲。解决python的输出有缓冲,导致nohup.out并不能够马上看到输出的问题。

nohup指令

nohup指不断地运行,是no hang up的缩写,指不间断,不挂断。运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup。

nohup在不规定的情况下,所以输出内容会到nohup.out中

& 后台运行

&为后台运行

使用 & 在程序结尾来让程序自动运行。

2>&1 错误内容重定向到标准输出

0 表示stdin标准输入,用户键盘输入的内容

1 表示stdout标准输出,输出到显示屏的内容

2 表示stderr标准错误,报错内容

2>&1 是一个整体,> 左右不能有空格,即将错误内容重定向输入到标准输出中去。

下面两条代码相同,只是1(标准输入)被省略了,而后面的my.log 2>&1 又将2(错误内容)输入到标准输出,然后前面的标准输出又输入到my.log中,意思错误和标准内容都会输出到my.log中

nohup python my.py >> my.log 2>&1 &
nohup python my.py 1 >> my.log 2>&1 &

以python环境不间断的运行myfile.py这个脚本,并且将脚本输出的内容重定向输入my.log中(>>意为追加,如果用>会让其中的内容清空)

nohup python my.py >> my.log 2>&1 &

代码可拆成两块。即:

# 等价于下面两行的内容
nohup python my.py 1>> my.log &
nohup python my.py 2>> my.log &
  • 上面代码就是将错误和标准都输出到my.log,最初的代码只是简化了。
    假如为2>1,那就是将错误内容输出到文件1中
    加2>&1中的&是为了区别文件1和1(标准输出)
  • nohup tomcat.sh > /dev/null 2>&1 & 也是一样的,将错误和标准全部丢入/dev/null 中,全部销毁。

查看当前python相关进程

Linux可以通过ps指令相关参数查看各种进程,但查看所有进程往往等于大海捞针,所以查看python相关进程在运行代码时更为实用

ps -ef |grep python

可以看到当前有两个程序正在运行,进程号分别为2173876和2183310

结束进程

如果不想某个程序继续执行了,可以结束进程

kill -9 <进程号>

nohup后台pip下载安装

同理

终端如果直接pip install,关闭中断后pip自然也被中断了。

但是有些他就是下的慢,比如torch,需要几个小时。

解决:用nohup。但是不能直接nohup pip,因为pip本身是Python的模块。

nohup python -m pip install xxx&

其会挂上一个程序直到跑完,其输出会在nohup.out,可以查看日志。

缺点是,日志只会显示downloading xxx,并不显示进度。你也不知道完没完成,只能通过top命令找进程id查看是否安装完。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2月前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
2天前
|
存储 NoSQL 数据库连接
在Python程序中实现LevelDB的海量key的分批次扫描
通过本文的步骤,您可以在Python程序中实现对LevelDB海量key的分批次扫描。这样不仅能够有效地管理大规模数据,还可以避免一次性加载过多数据到内存中,提高程序的性能和稳定性。希望这篇指南能为您的开发工作提供实用的帮助。
43 28
|
21天前
|
安全 API C语言
Python程序的安全逆向(关于我的OPENAI的APIkey是如何被盗的)
本文介绍了如何使用C语言编写一个简单的文件加解密程序,并讨论了如何为编译后的软件添加图标。此外,文章还探讨了Python的.pyc、.pyd等文件的原理,以及如何生成和使用.pyd文件来增强代码的安全性。通过视频和教程,作者详细讲解了生成.pyd文件的过程,并分享了逆向分析.pyd文件的方法。最后,文章提到可以通过定制Python解释器来进一步保护源代码。
64 6
|
25天前
|
弹性计算 安全 开发工具
灵码评测-阿里云提供的ECS python3 sdk做安全组管理
批量变更阿里云ECS安全组策略(批量变更)
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
15天前
|
Shell 开发工具 Python
如何在vim里直接运行python程序
如何在vim里直接运行python程序
|
2月前
|
开发者 Python
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
73 9
|
2月前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
48 2
|
2月前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
62 5
|
2月前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
50 1