&符号

这两天要在服务器端一直运行一个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脚本相关推荐

  1. python定时开关机的代码_用python写一个windows下的定时关机脚本(推荐)

    由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习Python,于是决定用python写一个定时关机 ...

  2. python查找文件夹下的文件,python 查找文件夹下所有文件 实现代码 -电脑资料

    复制代码代码如下: def find_file_by_pattern(pattern='.*', base=".", circle=True): '''''查找给定文件夹下面所有 ...

  3. linux :YOLO5配置(ubuntu 20.04 下安装运行yolov5)

    ubuntu 20.04 下安装运行yolov5 新建文件夹,安装python 安装 python-pip: 克隆YOLOv5Git code 配置YOLO环境 安装yolov5: ubuntu 20 ...

  4. mac怎么查python的版本_Mac下如何查看Python的版本?

    [1,terminal : input: which python2,  terminal:input : python  --->import sys  ----> print sys. ...

  5. linux关闭mysql日志记录_linux 下mysql 运行一段时间后自动关闭,日志无异常

    5月5日启动mysql,6月5日5:01:04mysql关闭,启动后运行正常,日志如下(ps:mysql关闭后,ssh登录不了服务器)15050509:49:19mysqld_safeStarting ...

  6. 安装python环境与运行_linux下怎么安装python的运行环境

    展开全部 1.2113linux下安装python3 a. 准备编译环境(环境如果不对的5261话,可能遇到各种问题,比如wget无法下4102载1653https链接的文件)1 2 yum grou ...

  7. 更改python默认路径_Linux下多版本python共存时,默认执行路径修改方法

    遇到的问题和环境是这样:首先workspace上存在一个Python2.7和一个Python3.5,其中Python3.5是理想的运行环境,有很多自定义模块,运行代码时需要这个环境.原本默认是在这个环 ...

  8. 用python写一个windows下的定时关机脚本

    由于本人经常使用笔记本共享WiFi,但是又不想笔记本开机一夜(为了低碳环保嘛 ~_~!),所以每次都要用使用DOS命令关机,感觉好麻烦.正好最近在学习python,于是决定用python写一个定时关机 ...

  9. tomcat php模块化运行,Windows下 Tomcat 运行 PHP 的配置

    前言: 由于本人在开发和学习过程中需要同时部署 JavaWeb 和 PHP 项目,于是整理了网上的一些相关资料,并结合自己的实际操作,记录于此,以供参考. 一.环境(64bit): 1.操作系统.To ...

  10. python ubuntu18.04 sublime_Ubuntu下Sublime配置python编译环境及新手使用指导:

    Sublime下配置python编译环境及搭建虚拟环境:(windows下大致相同) 1.编译环境配置 2019-3-6更新教程,发现好像 官方网址打不开了,要改一下源才行. 解决办法: 点击 Pre ...

最新文章

  1. 分别打印三位整数的个位、十位、百位
  2. 设计模式04_抽象工厂模式
  3. POJ.3648.Wedding(2-SAT)
  4. redis的基本使用笔记一
  5. luov之windows 常用端口详解
  6. 2020年10月程序员工资统计,平均14459元
  7. Linux 下 Shell 命令的分类及用法
  8. linux 文件系统 xfs、ext4、ext3 的区别
  9. BZOJ.1178.[APIO2009]会议中心(贪心 倍增)
  10. CVPR学习(二):CVPR2019-行人重识别
  11. 在Azure Cloud Service中部署Java Web App(2)
  12. 使用百词斩如何减少复习量
  13. Java——课设——图书管理系统实现
  14. 基于springBoot+MyBatis+Vue的前后端分离旅游管理系统
  15. Android获取外网ip
  16. Hive 核心原理(hive-3.1.2)
  17. 校长 – Roy's Blog
  18. ARC 128D - Neq Neq(dp+组合数学+思维)
  19. 隧道安全管理八大系统
  20. MySQL配置参数大全

热门文章

  1. Tomcat启动报错Unexpected exception parsing XML document from ServletContext resource
  2. Androidstudio快捷键的使用
  3. linux中的浏览器出现中文乱码解决方法
  4. 小米机器人磁条_小米扫地机1S开箱和简单评测
  5. OpenCV图像处理--将图像裁剪为圆形
  6. 商城微信小程序(二)——完成分类页面及商品列表页
  7. 练耳大师EarMaster Pro7中文版
  8. laravel框架api接口返回Validate Request 一直重定向问题
  9. Matplotlib之Figure的使用
  10. css镂空三角形样式