[Linux] Python脚本如何在linux后台运行以及输出重定向问题

在部署.py脚本到linux服务器的时候,我们经常想把后台脚本输出(程序print)的内容存到日志里。

首先.py后台运行的2个方法:

1.  nohup

nohup python -u MainServices.py >> services.log 2>&1 &

>> services.log   为重定向追加输出log到现有services.log文件, 如果写>重定向的话是清空原文件services.log并替换log
python -u这个非常重要, 由于python有缓冲机制,print不一定会立刻输出到文件!!! 加了-u可以让stdout等强制无缓冲, 立刻输出到文件!
2>&1 将错误重定向到标准输出中(意思是都显示在一起!在一个文件里)
最后的&表明后台运行

2. screen

因为每条语句都写nohup太麻烦了!所以有了万能的screen. (screen需要你手动安装在你的OS上,但是强烈推荐这个工具!)
他的效果就是生成多个不同的子shell环境(screen session)可以运行后台作业,并且可以自由在这些单独的环境之间切换。
注意, screen其实和最著名的编辑器vim调用命令方式一样,在screen的子shell中,通过快捷键Ctrl+a进入命令模式(比如detach的命令是Ctrl+a 然后Ctrl+d)。

命令:

screen 启动新的screen session, screen -S <session name>是通过指定名字启动新screen session (推荐!!!)
ctrl+a然后ctrl+a 把当前的screen session放到后台运行,回到最开始的主shell环境
exit 彻底退出当前的screen session
screen -x 回到上一个激活的screen session
screen -ls 列出所有现在后台的screen session
screen -r <pid> 在用screen -ls列出素有screen session以及他们的进程号(pid)后 用这个命令跳转到相应的screen
screen - wipe  删掉无用的session session 
ctrl+a 然后输入:sessionname <new session name>重命名当前session。

例子:

root@vultr:  screen
root@vultr:  python -u MainServices.py >> services.log 2>&1
root@vultr:  (按下CTRL+A 然后CTRL+D退出当前screen session保持语句在后台执行) 

root@vultr:  screen -x
(screen -x 又回到刚才运行MainServices.py的screen session)

PS: 在screen session里貌似rz是不管用的.... 貌似只有退出screen才可以用rz传文件
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值