使用 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 &

自定义输出文件:

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

查看运行状态:

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

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

案例一:数据备份

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

nohup python backup.py &

案例二:Web 爬虫

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

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

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

案例三:模型训练

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

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

注意事项:

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

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

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

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

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

你可能感兴趣的:(python,php,开发语言)