linux下后台运行python脚本

简介: linux下后台运行python脚本

这几天工作中遇到一个问题,后台运行python脚本,存储输出日志到linux系统中,因为在脚本中用了大量的print,导致输出很多信息,服务器内存占满了光是log就有120G,因此写下这篇博客,记录后台运行python脚本的一些方法和保留日志信息的参数


常见的命令


command >/dev/null 2>&1 &
command >/dev/null 2>python.log &
command >python.log 2>&1 &
command >/dev/null 2>log &


command:python test.py


下面将对这些命令的符号进行解释:


文件重定向运算符 – ‘>’:“>”符号被称为文件重定向运算符。其目的是将其左侧的命令指向右侧的命令。用更简单的语言来说,左边的任何数据字符串都将定向到运算符的右侧。定向大致意思就类似于文件写入的意思

末尾的&:指在后台运行


/dev/null


/dev/null是一个空设备——一种特殊类型的虚拟设备。它存在于每个Linux系统中,此设备的目的是丢弃发送到它的任何东西,并读取文件结束(EOF)。大多数虚拟设备用于读取数据;然而,/dev/null是唯一的,因为它用于抑制写入它的任何数据。简而言之,它充当Linux操作系统中的数据黑洞,数据写进来了,就没有了


文件描述符 – ‘0’,‘1’,‘2’


Linux中的每个命令执行都会生成三个相关文件:标准输入、标准输出和标准错误文件。Linux操作系统是指每个文件都有一个唯一的非负整数。

a19cc87e4ab64f29b9b6d719034bb93a.png


  • 标准输入为“0”
  • 标准输出为“1”
  • 标准错误为“2”

从上图可以看到,只有标准输出, 和标准错误,才会显示到screen中,才能写入到log中

标准输入、标准输出和标准误差流的技术术语分别为stdin、stdout和stderr


到这里可以发现/dev/null,和log文件可以看成是二个存放数据的容器,而文件描述符1和2可以看成是输出的数据,我们通过文件重定向运算符,将数据写入到指定的容器中,注意的是2可以写入到1中


2>&1 我们正在将标准错误输出(2的文件描述符)重定向到标准输出(1的文件描述符)。符号&在2>&1意味着1是一个目标文件描述符。


其中command >/dev/null 默认将文件描述1 给/dev/null了

那么这些命令不同组合下来就有:


组合
2>/dev/null
1>/dev/null
2>$1
1>test.log
2>test.log



nohup和tmux


nohup就是 no hang up的意思,主要功能是你在退出账户/关闭终端之后继续运行相应的进程,不挂断的运行,注意并没有后台运行的功能,一定要结合&使用才能实现后台运行功能,如果不末尾不加&,control+C,程序就挂断了。


nohup commond >/dev/null 2>python.log &
nohup python test.py &


Tmux是一个非常强大的终端多路复用器,非常有用,特别是当您通过SSH使用远程服务器时。


如果我们想在远程服务器上同时执行多项任务,通常我们有两种方法。我们可以将SSH到远程服务器中,并在每个终端命令的末尾运行所有内容。如果您想监控每项任务的进程,这是有问题的。我们还可以打开多个窗口,将SSH放入每个窗口的远程服务器,并为每个窗口运行一个任务。


tmux的功能简单说就是为终端多开几个窗口,执行完运行脚本,通过命令exit实现关闭窗口



相关文章
|
26天前
|
安全 网络安全 文件存储
思科设备巡检命令Python脚本大集合
【10月更文挑战第18天】
62 1
思科设备巡检命令Python脚本大集合
|
22天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
120 68
|
6天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
25 2
|
8天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
22 3
|
13天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
18 3
|
13天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
15 2
|
14天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
1月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
51 1
Python实用记录(十三):python脚本打包exe文件并运行
|
15天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
16天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。