【Linux系列】使用 `nohup` 命令运行 Python 脚本并保存输出日志的详细解析

💝💝💝很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。

img

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝

✨✨ 欢迎订阅本专栏 ✨✨

目录

nohup 命令简介

命令格式解析

使用场景和注意事项


在日常的编程和系统管理工作中,我们常常需要运行一些长时间运行的脚本或程序,而这些脚本或程序可能需要在后台运行,即使用户注销或断开连接后仍然继续执行。nohup 命令正是为了满足这种需求而设计的。
在这里插入图片描述

nohup 命令简介

nohup 是一个常用的 Unix 命令,用于忽略挂起信号(SIGHUP),使得命令在用户注销后仍然继续运行。SIGHUP 是一个信号,当用户注销或断开连接时,系统会发送这个信号给当前会话中的所有进程,导致这些进程终止。通过使用 nohup,我们可以确保即使在用户注销或断开连接的情况下,命令仍然能够继续执行。

命令格式解析

nohup python 11.py > output.log 2>&1 &
  • nohup:这是命令的开始部分,用于忽略挂起信号。它告诉系统即使用户注销或断开连接,命令仍然应该继续运行。nohup 后面可以跟任何需要在后台运行的命令。

  • python 11.py:这是需要运行的命令。在这个例子中,我们使用 python 命令来运行名为 11.py 的 Python 脚本。11.py 是一个 Python 文件,通常包含一些需要长时间运行的代码或逻辑。你可以将 11.py 替换为任何你需要运行的 Python 脚本文件名。

  • >:这是一个 shell 命令,用于将命令的输出重定向到文件。在 Unix 和 Linux 系统中,> 是一个非常常用的命令,用于将命令的标准输出(stdout)重定向到文件或其他设备。

  • output.log:这是指定输出日志的文件名。在这个例子中,我们将命令的标准输出重定向到名为 output.log 的文件中。你可以根据需要将 output.log 替换为任何你想要的文件名。这个文件将包含脚本的输出信息,例如打印的文本、计算结果等。

  • 2>&1:这是一个 shell 命令,用于将标准错误(stderr)也重定向到标准输出(stdout)。在 Unix 和 Linux 系统中,标准输出和标准错误是两个不同的输出流。标准输出通常用于输出正常的程序信息,而标准错误用于输出错误信息。通过使用 2>&1,我们可以将标准错误也重定向到标准输出,这样所有的输出(包括错误信息)都会被写入到 output.log 文件中。这对于调试和记录程序的运行情况非常有用,因为我们可以从日志文件中查看到所有的输出信息,包括错误信息。

  • &:这是一个 shell 命令,用于将命令放到后台运行。在 Unix 和 Linux 系统中,& 是一个非常常用的命令,用于将命令放到后台执行,这样你可以在命令运行的同时继续使用当前的 shell。这对于运行一些长时间运行的命令或脚本非常有用,因为你可以继续在当前的 shell 中执行其他命令或操作,而不需要等待当前命令的完成。

使用场景和注意事项

使用 nohup 命令运行 Python 脚本并保存输出日志的场景非常广泛。例如,在服务器上运行一些长时间运行的任务,如数据处理、机器学习训练、网络爬虫等,都可以使用 nohup 命令来确保任务在后台运行,并且即使用户注销或断开连接后仍然继续执行。

在使用 nohup 命令时,需要注意以下几点:

  1. 文件权限:确保你有权限写入指定的日志文件。如果文件不存在,nohup 命令会尝试创建文件。如果文件已经存在,nohup 命令会将输出追加到文件的末尾。

  2. 磁盘空间:长时间运行的脚本可能会产生大量的输出日志,需要注意磁盘空间的使用情况,避免因为日志文件过大而导致磁盘空间不足。

  3. 错误处理:虽然 nohup 命令可以确保脚本在后台运行,但脚本本身可能仍然会因为各种原因而失败或终止。因此,在脚本中添加适当的错误处理和日志记录是非常重要的,以便于在出现问题时能够及时发现和处理。

  4. 进程管理:使用 nohup 命令运行的进程可以通过 ps 命令查看,也可以通过 kill 命令终止。需要注意的是,使用 nohup 命令运行的进程不会因为用户注销或断开连接而终止,但仍然可以通过 kill 命令手动终止。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

### 如何在Linux系统上编写和运行Python脚本 #### 查看系统是否安装Python3 为了确认系统已安装Python3,在终端执行如下命令来验证: ```bash python3 --version ``` 这条命令会显示当前系统的Python3版本号,如果没有输出任何信息,则表示未安装Python3[^1]。 #### 编写Python脚本 创建一个新的Python文件用于编写代码。可以使用任意文本编辑器打开保存为`.py`扩展名的文件。例如,创建名为`example.py`的文件,加入以下内容作为简单的测试程序: ```python print("Hello, Linux!") ``` 对于希望直接通过路径调用该脚本的情况,可以在文件顶部添加解释器位置声明行(Shebang),以便操作系统知道应该使用哪个解释器去解析这个脚本: ```python #!/usr/bin/env python3 print("Hello, Linux!") ``` 这使得可以直接像其他可执行文件一样运行Python脚本而无需显式指定解释器[^2]。 #### 运行Python脚本 有几种方法可以在Linux下启动Python脚本。最简单的方法是在命令提示符后面键入`python3 scriptname.py`替换其中的`scriptname.py`为你自己的文件名称。另一种方式是赋予脚本本身权限使其成为独立的应用程序形式,即设置其具有+x属性之后就能如同常规应用程序那样被执行了。 要使脚本具备执行权能,需先更改它的访问控制列表ACL,具体做法是对目标文件应用chmod命令增加相应的许可位: ```bash chmod +x example.py ./example.py ``` 上述两条语句分别完成了修改权限与实际执行两个动作;前者让脚本能被当作命令对待,后者则是真正意义上的“跑起来”。 另外还有一种场景适用于长时间无人值守的任务处理——把进程放到后台持续运作而不受前台活动干扰影响。这时就可以借助nohup工具配合重定向技术实现这一点: ```bash nohup python3.6 -u main.py > output.log 2>&1 & ``` 这段话的意思是以守护模式开启一个新作业,即使关闭SSH连接也不会终止它的工作状态,同时将其标准输出流和错误消息都导向到日志文档里存储下来方便后续查阅分析[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值