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 &
这样就能使命令永久的在后台执行
例如:
- 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
“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脚本相关推荐
- 后台运行python脚本
在服务器运行python脚本时,如果使用平常的python aaa.py,当你关闭xshell工具后,程序也就停止了,这时需要让服务器后台运行python脚本,本机关机后,服务器也会运行,这时你只需睡 ...
- linux 下后台运行python脚本
1.运行python脚本命令 nohup python -u pix2pix.py > out.log 2>&1 & 2.查看正在输出的日志(动态打印): tail -f ...
- Linux定时运行Python脚本
Linux–CentOS定时运行Python脚本 最近公司的项目开始进入运营阶段,数据库的记录也开始多了起来.看了postgresql的自动清理好像不太符合需求,暂定对接口请求记录表保留3个月内的记录 ...
- Linux后台运行python程序并输出到日志文件
后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...
- windows连接linux服务器并后台运行python脚本
将本地文件上传linux服务器: D:\Program Files\PuTTY>pscp D:\python\pythonwork\jobui\rpxcorp.py root@47.104.10 ...
- Linux上后台运行python脚本,并查看脚本日志
ps -ef | grep xxx.py #查看xxx.py脚本是否在运行#后台运行xxx.py脚本,并输出日志到nohup.out文件,当前命令这个文件与xxx.py位置在一个目录下 nohup p ...
- linux使得python后台运行,linux 下后台运行python脚本
&符号 这两天要在服务器端一直运行一个Python脚本,当然就想到了在命令后面加&符号 $ python /data/python/server.py >python.log & ...
- linux运行python脚本语句,如何在Linux下运行Python脚本
1.使用python的IDEL运行python 如果你的Linux安装了python,Ctrl+Alt+T打开Terminal后输入指令:python,会出现>>>,这个时候就可以在 ...
- 如何在Linux下运行Python脚本
1.使用python的IDEL运行python 如果你的Linux安装了python,Ctrl+Alt+T打开Terminal后输入指令:python,会出现>>>,这个时候就可以在 ...
最新文章
- 联想确认再次裁员 称调整主要分布在海外
- 控制台怎么查看错误的详细信息_Java 程序该怎么优化?命令篇
- OpenAI挑战DOTA 2世界冠军OG,这是赌上人类尊严的决战
- 21天Jenkins打卡Day7-打包git代码
- 动态ip解析 linux,ddwrt路由/linux动态解析ip(ddns)到dnspod配置
- VS2010制作dll
- python学习之-- redis模块基本介绍
- 使用定位技术,边界判断要谨慎
- Python简单方法实现英文文本词频统计
- linux怎么查看hwaddr_Linux 查看网卡的MAC地址
- 如何在 Kubernetes 集群中集成 Kata
- 数字图像处理 - 相关资源整理
- Linux 打包可执行文件
- 大学计算机应用基础屈立成,五笔字型输入法教程-计算机应用基础教学网.PDF
- 《保健养生》---保健专家齐国力[2]
- 图像检索中一些特征索引技术
- 零基础学Arcgis(七)|空间数据采集与管理(4)数据检查
- 0基础自学软件测试,10分钟从测试9个阶段带你入门【建议收藏】
- DPK8300E+设置 (打印乱码)
- 游戏角色制作行业标准?点开看看吧,深度技术好文