• 使用 nohup 运行 Python 脚本


    简介:在数据科学、Web 开发或者其他需要长时间运行的任务中,我们经常需要让 Python 脚本在后台运行。尤其是在远程服务器上,可能因为网络不稳定或需要执行多个任务,我们不希望 Python 脚本因为终端关闭而被终止。这时,nohup 就是一个非常实用的工具。本文将详细介绍 nohup 的特点、使用步骤、案例以及注意事项。

    历史攻略:

    使用Supervisor部署Sanic应用

    使用Gunicorn部署Sanic应用

    特点:

    1、持久运行:使用 nohup 启动的程序会忽略所有的挂断(hangup)信号,即使你退出了终端,它也会继续运行。

    2、日志记录:默认情况下,nohup 会把输出信息保存到一个叫做 nohup.out 的文件中,方便你之后查看。

    3、灵活性:你可以自定义输出的文件名和路径,并通过重定向将输出和错误输出分别保存。

    4、资源友好:相比于其他后台运行的方法(比如守护进程或使用 tmux、screen 等工具),nohup 是一种相对轻量级的方式。

    使用步骤:

    基础用法:

    nohup python your_script.py &
    
    • 1

    自定义输出文件:

    nohup python your_script.py > custom_output.out 2>&1 &
    
    • 1

    查看运行状态:

    ps aux | grep 'your_script.py' # 查找进程ID
    
    • 1

    终止进程:找到进程ID后,使用 kill [PID] 终止进程

    案例一:数据备份

    假设你有一个 Python 脚本 backup.py,该脚本会每小时从一个数据库备份数据到另一个位置。由于这是一个持续性任务,我们可以用 nohup 来确保即使在网络不稳定或终端关闭的情况下,备份任务也能继续进行。

    nohup python backup.py &
    
    • 1

    案例二:Web 爬虫

    如果你有一个 crawler.py 的爬虫脚本,需要持续地从网站爬取数据,但你不希望它占据你的终端。

    nohup python crawler.py > crawler_output.out 2>&1 &
    
    • 1

    这样即使你退出了终端,爬虫也会持续运行,并将所有输出和错误保存到 crawler_output.out 文件中。

    案例三:模型训练

    当你需要在远程服务器上训练一个机器学习模型时,通常需要很长的时间。使用 nohup 可以让你安心地关闭终端或断开连接,而不影响模型训练。

    nohup python train_model.py > training.log 2>&1 &
    
    • 1

    注意事项:

    1、资源监控:长时间运行的脚本可能会消耗大量资源,务必监控内存和CPU使用情况。

    2、错误处理和日志:确保你的 Python 脚本具有异常处理和适当的日志记录功能。

    3、权限问题:确保 nohup 命令和 Python 脚本有适当的运行权限。

    4、终端交互:nohup 不适用于需要终端交互的脚本。

    总结:nohup 是一个在 UNIX 和类 UNIX 系统(包括 Linux 和 macOS)中用于运行不受挂断信号影响的命令的实用工具。通过简单的命令行操作,你可以确保你的 Python 脚本在后台安全、持久地运行。希望通过这篇文章,你已经掌握了如何使用 nohup 来优化你的工作流程。

  • 相关阅读:
    数据库优化
    深入了解Spring循环依赖本质
    C语言函数指针
    【ICML 2018】Noise2Noise: Learning Image Restoration without Clean Data
    try-with-resources
    Android 13 全局监听播放器暂停与播放 (包含系统层和第三方app)
    AI教程视频《AI illustrator入门到精通》零基础自学教程教学
    Go HTTP 调用(下)
    「go查漏补缺」命名规则以及 GROM 结构体的应用
    狗都能看懂的CenterNet讲解及代码复现
  • 原文地址:https://blog.csdn.net/hzblucky1314/article/details/133072262