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实现关闭窗口



相关文章
|
14天前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
|
15天前
|
存储 Shell 区块链
怎么把Python脚本打包成可执行程序?
该文档介绍了如何将Python脚本及其运行环境打包成EXE可执行文件,以便在不具备Python环境的计算机上运行。首先确保Python脚本能够正常运行,然后通过安装PyInstaller并使用`--onefile`参数将脚本打包成独立的EXE文件。此外,还提供了去除命令行窗口和指定可执行文件图标的详细方法。这些步骤帮助用户轻松地将Python程序分发给最终用户。
怎么把Python脚本打包成可执行程序?
|
4天前
|
存储 程序员 开发者
Python 编程入门:从零基础到编写实用脚本
【9月更文挑战第15天】本文是一篇面向初学者的Python编程入门指南,通过浅显易懂的语言和实际的代码示例,引导读者逐步掌握Python的基本概念、语法规则以及如何运用Python解决实际问题。文章不仅介绍了Python的基础知识点,还通过实例演示了如何将这些知识应用于日常编程任务中,帮助读者快速上手并能够独立编写简单的Python脚本。
|
4天前
|
监控 Ubuntu API
Python脚本监控Ubuntu系统进程内存的实现方式
通过这种方法,我们可以很容易地监控Ubuntu系统中进程的内存使用情况,对于性能分析和资源管理具有很大的帮助。这只是 `psutil`库功能的冰山一角,`psutil`还能够提供更多关于系统和进程的详细信息,强烈推荐进一步探索这个强大的库。
14 1
|
9天前
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第41天】在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
6天前
|
运维 监控 Linux
自动化运维的魔法:如何用Python脚本简化日常任务
【9月更文挑战第13天】在数字化时代的浪潮中,自动化运维如同一股清流,为IT团队带来了效率和灵活性的双重提升。本文将深入探讨如何通过Python脚本实现日常运维任务的自动化,从而释放双手,让重复性工作变得轻松愉快。从环境搭建到实际案例分析,我们将一步步揭开自动化运维的神秘面纱,让你的运维之路更加顺畅。
|
14天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
16天前
|
存储 Java 开发者
python脚本实现原理
【9月更文挑战第4天】python脚本实现原理
29 5
|
12天前
|
运维 监控 API
自动化运维:使用Python脚本进行日常管理
【9月更文挑战第6天】在现代的IT环境中,自动化运维已成为提升效率、减少人为错误的关键。本文将介绍如何通过Python脚本简化日常的运维任务,包括批量配置管理和日志分析。我们将从基础语法讲起,逐步深入到脚本的实际应用,旨在为读者提供一套完整的解决方案,以实现运维工作的自动化和优化。
14 1
|
17天前
|
运维 Linux 测试技术
自动化运维:使用Python脚本简化日常任务
【8月更文挑战第34天】在快节奏的IT环境中,自动化运维成为提升效率、降低错误率的关键。本文以Python脚本为例,展示如何通过编写简单的脚本来自动化日常运维任务,如批量更改文件权限、自动备份数据等。文章不仅提供代码示例,还探讨了自动化运维带来的益处和实施时应注意的问题。