问题描述: 用xshell连接服务器, 运行脚本, 如果关闭xshell, 此时程序会终止, 这就很不舒服 如何保证服务器后台自己运行py程序呢
未完待续...
1.使用nohup 方法
首先 ubuntu需要安装
apt-get install nohup
然后:
nohup python -u main.py > test.out 2>&1 &
其中 0、1、2分别代表如下含义:
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
......
未完待续...