Python 后台运行

关于Python后台运行,查找了很多资料,配合Tornado后端库来实现。

首先聊一聊Linux中,关于后台和前台的问题。

当前状态下,执行了一条阻塞型命令(apt update或是yum update)时,我们无法再这条命令执行的基础上,再执行命令。当然&&是类似于消息队列,之前的命令完成(无论状态)之后再执行。

而后台便是一种类似并发,可以同时执行多条指令。这此之上,可以将重定向输出。

# -*- coding:utf-8 -*-def run():print("run 1")import timefor i in range(100):time.sleep(1)print(i)if __name__ == '__main__':run()

当我们有一个python文件(名字run.py

使用python3 run.py的时候,这个程序将会在终端中输出数字(1-100)的同时休息1秒。除非我们ctrl+c终止,或者ctrl+z移至后台。

但是对于后端程序而言,ctrl+z将会把程序放入后台,并且处于暂停状态。

  1. 第一种:后台不暂停挂起方式(安利)

    # 原命令
    >>> python3 run.py# 在执行程序时,添加命令
    >>> nohup python3 run.py > my.log &
    

    nohup不挂断运行命令

    &后台运行

    >将程序输出结果重定向输出到my.log日志中,若不指定日至文件,将使用默认nohup.out

    直接用./sh文件就可以运行

    但是如果想后台运行,即使关闭当前的终端也可以运行的话,需要nohup命令和&命令。

  2. 第二种:使用python-daemon方式

    pip3 install python-daemon
    

    写一个新的py文件(名字:run2)

    import daemon
    from run import run with daemon.DaemonContext():run()
    

    然后python3 run2.py

  3. 第三种:ctrl+z+bg指令

    # ctrl+z将前台运行的程序放入后台挂起
    time@time:~$ python3 run.py
    runing
    0
    1
    2
    ^Z
    [1]+  已停止               python3 run.py
    time@time:~$
    
    # 使用bg %jubnum 方式继续运行
    time@time:~$ bg 1
    [1]+ python3 run.py &
    time@time:~$ 3
    4
    5
    6
    7
    8
    9
    10
    ...
    

    如果这样做,那么输出结果将继续占用终端,ctrl+z将无法后台运行

    原因在于:bg指令本身是将后台暂停的程序继续运行,但并不是将程序本身从后台调至前台。所以占用终端的不是程序本身,而是输出结果。

    有一种很烦人的做法,让当前终端都处于一种ctrl+c都无法终止的情况

    # ctrl+z将前台运行的程序放入后台挂起
    time@time:~$ python3 run.py
    runing
    0
    1
    2
    ^Z
    [1]+  已停止               python3 run.py
    du@du-GL553VD:~$
    

    依旧这样做,但在bg 1的时候,重定向输出结果……

    time@time:~$ bg 1 > my.log
    # 或
    time@time:~$ bg 1 > my.log &
    

    除非关闭终端,让我们肉眼无法看到……???

    ***请不要在有实时输出的情况下用这种方式,不然连条命令写都写不了


python 后台运行相关推荐

  1. Python后台运行 -- nohup python xxx.py

    nohup 用法总结 代码示例 nohup指令 2>&1 错误内容重定向到标准输出 & 后台运行 若不指定输出文件名,默认会在当前目录生成nphup.out文件 可能存在的问题 ...

  2. linux使得python后台运行,linux 下后台运行python脚本

    &符号 这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...

  3. 【破事氵】在Linux环境中让程序在后台运行

    前言 首先,相信大家都或多或少了解过linux和云服务器.linux作为一个开源的操作系统内核,在开发者人群和服务器领域中有着很高的使用率.而现在在以阿里云为代表的云服务器商中,可以以很低的价格买入入 ...

  4. 【Linux系统理论操作学习26】LInux的后台运行,重定向输出,前后台进程转换和管理

    1 输出的后台运行 1.1 简单后台运行 nohup表示程序不被挂起 &表示后台运行程序 如果说使用&,就会出现问题:后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程 ...

  5. Linux在后台运行python程序、脚本程序、可执行程序等,关闭终端仍可保持程序运行

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 原创文章,转载告知,盗版必究 Linux在后台运行python程序.脚本程序.可执行程序等,关闭终端仍可保持程序运行 文章目录: 1 为什么需要后台运 ...

  6. python程序后台运行的实现

    后台运行work()方法. work.py 1 # -*- coding:utf-8 -*- 2 3 def work(): 4 print "running" 5 import ...

  7. Python脚本后台运行的五种方式

    方法一:脚本后加& 加了&以后可以使脚本在后台运行,这样的话你就可以继续工作了.但是有一个问题就是你关闭终端连接后,脚本会停止运行: 如: <span style="w ...

  8. linux后台运行python脚本

    &符号 这两天要在一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...

  9. bash不识别命令 ssh_关于Python脚本在后台运行的几种方式!(linux,bash,tmux,等)...

    前言: 今天为大家带来的内容,主要介绍了Python脚本后台运行的几种方式,linux下后台运行.通过upstart方式实现.通过bash脚本实现.通过screen.tmux等方式实现,需要的朋友可以 ...

最新文章

  1. bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束
  2. zabbix工作流程(自定义添加监控项目)
  3. 数据挖掘 —— 有监督学习(回归)
  4. java小数转换成百分数_在java中如何把小数转化成百分数
  5. win7下删除提示没权限删除文件的方法
  6. jquery-autocomplete学习(转)
  7. windows 2008 R2系统安装拨号v p n详细配置
  8. zk4元年拆解_科比5 Protro开箱测评 zk5元年拆解赏析
  9. unixbench分析_unixbench测试CPU性能工具
  10. java jdom 创建xml_JDOM 创建 XML
  11. java 汉字 拼音排序_Java字符串按照汉语拼音排序
  12. elastic mapping not_analyzed 简单理解 + analysis-ik分词器安装
  13. [技术评论]龙芯电脑
  14. 算法开发:将合并后的模型编译成动态库(so文件)提供给qt调用
  15. OpenCV简单图像分割
  16. 微信ios上下拉网页禁止
  17. 001-查看ts版本、安装、卸载
  18. html中一些标签怎么打印,html2ps - 如何打印小标签?
  19. 如何知道当前操作系统是centos的哪个版本和内核版本?
  20. Linux基础知识学习笔记-----crack_the_WiFi_secret

热门文章

  1. xshell文件传输乱码_xShell终端中文乱码完全解决方法
  2. docker 笔记一
  3. 2020年消费电子行业前瞻:5G引领代际创新(156页)
  4. 【华为OD机试模拟题】用 C++ 实现 - 密室逃生游戏(2023.Q1)
  5. 微软Power Platform在中国市场正式商用 无缝衔接微软智能云“三驾马车”
  6. 使用Dreamweaver/利用HTML5/CSS/制作一个简单的文字logo
  7. NOIP 2008 普及组 传球游戏
  8. 【ABC科创企业案例】高科数聚:把脉消费者视角,洞悉消费力趋向
  9. 庞果网练习题——魔法
  10. iNFTnews | 元宇宙如何为性别酷儿人群提供包容空间