服务器后台跑python程序,不怕意外退出,并且不占用内存

问题描述: 用xshell连接服务器, 运行脚本, 如果关闭xshell, 此时程序会终止, 这就很不舒服 如何保证服务器后台自己运行py程序呢


1.使用nohup 方法

首先 ubuntu需要安装

apt-get install nohup

然后:

nohup python -u main.py > test.out 2>&1 &
其中 012分别代表如下含义:
 0 – stdin (standard input)
 1 – stdout (standard output)
 2 – stderr (standard error)
 
nohup python -u main.py > test.out 2>&1 &
nohup+最后面的& 是让命令在后台执行
>out.log 是将信息输出到out.log日志中
2>&1 是将标准错误信息转变成标准输出,这样就可以将错误信息输出到out.log 日志里面来。

来查看py脚本运行情况

ps -ef | grep xx.py

2.使用 screen方法

1.安装screen
sudo apt-get install screen
sudo yum install screen

rpm -qa|grep screen #查看是否成功
2 新建窗口

新建一个窗口有3种方法

# 方法一
screen  #这样就可以新建窗口,进入到一个窗口,但是这样窗口就没有名字,无法区分他们

# 方法二
screen -S  name  # 这样就新建一个名字为name的窗口,并进入到该窗口中
例如:screen -S sutools 新建了一个叫 sutools的窗口并进入

# 方法三
screen commend  # 这样新建一个窗口并在窗口中执行 commend, 同样没有名字
例如:screen python ./mycode.py 新建并执行mycode.py程序
3 会话分离
快捷键 CTRL + a 表示进入命令模式,
在当前会话窗口按ctrl+a+d,这时候窗口会弹出[detached]提示,
并回到主窗口。表示该程序已经被挂起。一般直接 CTRL+a +d 即可。
4.列出窗口列表
screen -ls 

screen -r 34837#进入3483756 线程,恢复sutools会话窗口
5 杀死多余窗口
kill -9 threadnum # 例如在上面的34837,kill -9 34837即可杀死线程,当然就杀死了窗口
使用Ctrl a +k 杀死当前窗口和窗口中运行的程序
使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序(不建议!!!)
6. 清除死去的窗口
screen -wipe 

使用总结:

# 新建窗口 sutools
screen -S sutools
# 运行命令   
python mucode.py 
# 挂起 [detached] 
ctrl + a + d  
# 查看窗口列表
screen ls  
# 两个屏幕之间自由切换
CTRL+a,tab
# 恢复挂起的窗口
screen -r 34837 
# 杀死指定窗口
kill -9 34837 
# 清除死去的窗口
screen -wipe
......

未完待续...
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值