Bootstrap

服务器端后台跑程序(Python)

当我退出链接服务器,程序都会终止

关键的命令:nohup (not hang up)

*基本用法:
进入要运行的文件目录前

nohup python -u test.py>test.log 2>&1 &

nohup bash train.sh>train.log 2>&1 &    

本人目前在服务器上执行的时候遇到了 nohup bash train.sh > train.log 2>&1 & 中间有空格时,程序依然会占用终端页面的情况。

*含义解释:
nohup 不挂起的意思
python test.py python运行test.py文件

-u 代表程序不启用缓存,也就是把输出直接放到log中,没这个参数的话,log文件的生成会有延迟

> test.log 将输出日志保存到这个log中

2>1 2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
2>&1 换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

& 最后一个& ,代表该命令在后台执行

*命令运行后会有提示,示例:
[1] 2880

代表进程2880中运行。

*查看nohub命令下运行的所有后台进程:
jobs
*查看后台运行的所有进程:
ps -aux

*查看后台运行的所有python 进程:
ps aux |grep python
或者

ps -ef | grep python

*删除进程
谨慎使用 kill -9 [进程id]      -9 的意思是强制删除 ;会影响到其他进程。

一般使用kill [进程id]   

*退出

遇到的问题:第一天晚上走之前,train.sh跑起来后直接关闭了ssh窗口,结果第二天早上来看发现昨晚服务器根本没跑程序。早上再次进行了实验,发现即使是nohup命令也一样。

原因:非正常退出。

解决方法:使用nohup启动 train.sh之后,使用exit命令正常退出当前账户,这样才能保证命令一直在后台运行。

;