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 pythontomener 1885  0.1  0.4  13120  4528 pts/0    S    15:48   0:00 python /data/python/server.pytomener 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 &

  

时间: 2024-11-03 05:42:52

linux 下后台运行python脚本的相关文章

关于 Linux 下后台执行 Python 脚本的缓冲问题

[问题简述] 在 Linux 下后台执行 Python 脚本,重定向到日志文件,日志文件迟迟没有内容. [方案一](测试有效) nohup python3 -u t.py &> log.log & [方案一](测试无效) 方案二来自 stackoverflow,虽然测试无效,但其他地方也许会用到,记录一下. stdbuf -oL nohup python3 t.py &> log.log & *** walker *** 原文地址:http://blog.51c

关于linux系统下CRONTAB运行python脚本不生效

关于linux系统下CRONTAB运行python脚本不生效 运维中难免会在定时任务中同时使用shell和python脚本,shell脚本不生效大部分为环境变量的问题,在脚本前增加环境变量基本能解决,如加上 source /etc/profile. 最近遇到python脚本不能执行的情况,状态描述,如目录/home/script/SH下有脚本Qdd.py和download.sh,手动是可以执行的是生效的,如下: python3 /home/script/SH/Qdd.py 放到定时任务cront

Linux下后台运行任务

http://www.cnblogs.com/xianghang123/archive/2011/08/02/2125511.html http://blog.csdn.net/u012700515/article/details/27113313 http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 将一个正在运行的任务放到后台,并且关机后任能运行 ctrl+z jobs #查找jobs的id disown -h %num #num为jo

在后台运行Python脚本服务

在服务器,程序都是后台运行的,当写的python脚本时,需要: 你要是想python robot.py & 是不行的,一旦用户登出,脚本就自动退出了.用at, cron也可以实现不过我发现了一个命令 nohup,可以忽略登出的信号,现在只要 nohup python robot.py &就好了.如果想要把 python里面 print的记录出来,可以这样 nohup python robot.py & > ./log/log1.log 查看后台运行的Python——pid 命

【转】使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关机不影响日本那边的程序运行.(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼) 2:不影响计算效率 2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情. 二.怎么样使程序在后台执行 方法有很多,这里主要列举两种.假如我们有程序pso

使程序在Linux下后台运行

一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关机不影响日本那边的程序运行.(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼) 2:不影响计算效率 2:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情. 二.怎么样使程序在后台执行 方法有很多,这里主要列举两种.假如我们有程序pso

iis下php 运行python 脚本

一:要注意的问题 1.iis下php要对python有权限. 2.cmd要所有者权限. 3.cmd命令行中编码格式是gbk. 4.exec(),shell_exec(),system(),passthru()的区别. 5.windows版本对应的python版本,我这里公司系统很老了,遇到很多坑. 二:例子 1.我这里用的是例子是passthru的例子.也是直接输出结果. 2.上php源码 header("Content-type:text/html;charset=utf-8");

linux下后台运行jar包

#当前窗口退出 项目关闭$ java -jar test.jar #当前窗口关闭 项目关闭$ nohup java -jar test.jar &#当前窗口关闭 项目不关闭$ nohup java -jar test.jar  &#当前窗口关闭 项目不关闭  并写日志$ nohup java -jar test.jar >log.txt & 原文地址:https://www.cnblogs.com/code-bugs/p/10317926.html

linux下后台运行node-js项目

安装pm2,这里默认你已经安装了node.js和npm npm install pm2 -g 创建软连接 全局path路径 echo $PATHpm2安装路径-安装pm2时,可看到pm2安装路径建立软连接:ln -s /usr/sbin/nodejs/bin/pm2 /usr/local/bin/ # 前一个为pm2安装目录,后一个选择path内任意一个:分割的地址查看是否安装成功:pm2 list 启动项目pm2 start app.js 原文地址:https://www.cnblogs.co