linux使得python后台运行,linux 下后台运行python脚本
&符号
这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号
$ python /data/python/server.py >python.log &
说明:
1、 > 表示把标准输出(STDOUT)重定向到 那个文件,这里重定向到了python.log
2、 & 表示在后台执行脚本
这样可以到达目的,但是,我们退出shell窗口的时候,必须用exit命令来退出,否则,退出之后,该进程也会随着shell的消失而消失(退出、关闭)
使用nohup(not hang up)
$ nohup python /data/python/server.py > python.log3 2>&1 &
说明:
1、1是标准输出(STDOUT)的文件描述符,2是标准错误(STDERR)的文件描述符
1> python.log 简化为 > python.log,表示把标准输出重定向到python.log这个文件
2、2>&1 表示把标准错误重定向到标准输出,这里&1表示标准输出
为什么需要将标准错误重定向到标准输出的原因,是因为标准错误没有缓冲区,而STDOUT有。
这就会导致 commond > python.log 2> python.log 文件python.log被两次打开,而STDOUT和 STDERR将会竞争覆盖,这肯定不是我门想要的
3、好了,我们现在可以直接关闭shell窗口(我用的是SecureCRT,用的比较多的还有Xshell),而不用再输入exit这个命令来退出shell了
$ ps aux|grep python
tomener 1885 0.1 0.4 13120 4528 pts/0 S 15:48 0:00 python /data/python/server.py
tomener 1887 0.0 0.0 5980 752 pts/0 S+ 15:48 0:00 grep python
现在当我们直接关闭shell窗口,再连接上服务器,查看Python的进程,发现进程还在
但是,在python运行中却查看不到输出!
因为:
python的输出有缓冲,导致python.log3并不能够马上看到输出。
使用-u参数,使得python不启用缓冲。
所以改正命令,就可以正常使用了
$ nohup python -u test.py > out.log 2>&1 &
nohup和&的区别
& : 指在后台运行
nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行
&是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出
那么,我们可以巧妙的吧他们结合起来用就是
nohup COMMAND &
这样就能使命令永久的在后台执行
例如:
1.sh test.sh &
将sh test.sh任务放到后台 ,即使关闭xshell退出当前session依然继续运行,但标准输出和标准错误信息会丢失(缺少的日志的输出)
将sh test.sh任务放到后台 ,关闭xshell,对应的任务也跟着停止。
nohup sh test.sh
将sh test.sh任务放到后台,关闭标准输入,终端不再能够接收任何输入(标准输入),重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
nohup sh test.sh &
将sh test.sh任务放到后台,但是依然可以使用标准输入,终端能够接收任何输入,重定向标准输出和标准错误到当前目录下的nohup.out文件,即使关闭xshell退出当前session依然继续运行。
任务前后台的切换
shell支持作用控制,有以下命令实现前后台切换:
command &让进程在后台运行
jobs 查看后台运行的进程
fg %n 让后台运行的进程n到前台来
bg %n 让进程n到后台去
kill %n 杀死job
PS: “n” 为jobs命令查看到的job编号,不是进程编号.
fg、bg、jobs、&、ctrl + z 都是跟系统任务有关的
一、&
这个用在一个命令的最后,可以把这个命令放到后台执行
python test.py &
二、ctrl + z
可以将一个正在前台执行的命令放到后台,并且暂停
三、jobs
查看当前有多少在后台运行的命令
jobs
[1]- Stopped vim ~/.bash_profile
[2]+ Stopped vim /etc/profile
四、fg
将后台中的命令调至前台继续运行
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)。
fg %1
五、bg
将一个在后台暂停的命令,变成继续执行
如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)。
bg %1
[1]+ vim ~/.bash_profile &
[1]+ Stopped vim ~/.bash_profile
六、kill
杀死jobs中具体jobnumber
jobs
[1]+ Stopped vim ~/.bash_profile
[2]- Stopped vim /etc/profile
杀死 jobnumber=1:
kill %1
[1]+ Stopped vim ~/.bash_profile
在查询下jobs:
jobs
[2]+ Stopped vim /etc/profile
补充
最近使用nohup创建了一个后台进程,默认日志输出到了nohup.out文件中,程序跑起来也就没再管, 过了大约一周,发现硬盘空间不够了,于是查找原因,发现这个nohup.out文件已经到了70G了,导致硬 盘空间不足了。
解决方案 :
只输出错误信息到日志文件
nohup ./program >/dev/null 2>log &
什么信息也不要
nohup ./program >/dev/null 2>&1 &
linux使得python后台运行,linux 下后台运行python脚本相关推荐
- python定时开关机的代码_用python写一个windows下的定时关机脚本(推荐)
由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习Python,于是决定用python写一个定时关机 ...
- python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料
复制代码代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ...
- linux :YOLO5配置(ubuntu 20.04 下安装运行yolov5)
ubuntu 20.04 下安装运行yolov5 新建文件夹,安装python 安装 python-pip: 克隆YOLOv5Git code 配置YOLO环境 安装yolov5: ubuntu 20 ...
- mac怎么查python的版本_Mac下如何查看Python的版本?
[1,terminal : input: which python2, terminal:input : python --->import sys ----> print sys. ...
- linux关闭mysql日志记录_linux 下mysql 运行一段时间后自动关闭,日志无异常
5月5日启动mysql,6月5日5:01:04mysql关闭,启动后运行正常,日志如下(ps:mysql关闭后,ssh登录不了服务器)15050509:49:19mysqld_safeStarting ...
- 安装python环境与运行_linux下怎么安装python的运行环境
展开全部 1.2113linux下安装python3 a. 准备编译环境(环境如果不对的5261话,可能遇到各种问题,比如wget无法下4102载1653https链接的文件)1 2 yum grou ...
- 更改python默认路径_Linux下多版本python共存时,默认执行路径修改方法
遇到的问题和环境是这样:首先workspace上存在一个Python2.7和一个Python3.5,其中Python3.5是理想的运行环境,有很多自定义模块,运行代码时需要这个环境.原本默认是在这个环 ...
- 用python写一个windows下的定时关机脚本
由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习python,于是决定用python写一个定时关机 ...
- tomcat php模块化运行,Windows下 Tomcat 运行 PHP 的配置
前言: 由于本人在开发和学习过程中需要同时部署 JavaWeb 和 PHP 项目,于是整理了网上的一些相关资料,并结合自己的实际操作,记录于此,以供参考. 一.环境(64bit): 1.操作系统.To ...
- python ubuntu18.04 sublime_Ubuntu下Sublime配置python编译环境及新手使用指导:
Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同) 1.编译环境配置 2019-3-6更新教程,发现好像 官方网址打不开了,要改一下源才行. 解决办法: 点击 Pre ...
最新文章
- 分别打印三位整数的个位、十位、百位
- 设计模式04_抽象工厂模式
- POJ.3648.Wedding(2-SAT)
- redis的基本使用笔记一
- luov之windows 常用端口详解
- 2020年10月程序员工资统计,平均14459元
- Linux 下 Shell 命令的分类及用法
- linux 文件系统 xfs、ext4、ext3 的区别
- BZOJ.1178.[APIO2009]会议中心(贪心 倍增)
- CVPR学习(二):CVPR2019-行人重识别
- 在Azure Cloud Service中部署Java Web App(2)
- 使用百词斩如何减少复习量
- Java——课设——图书管理系统实现
- 基于springBoot+MyBatis+Vue的前后端分离旅游管理系统
- Android获取外网ip
- Hive 核心原理(hive-3.1.2)
- 校长 – Roy's Blog
- ARC 128D - Neq Neq(dp+组合数学+思维)
- 隧道安全管理八大系统
- MySQL配置参数大全