利用nohup使得Python Flask项目在服务器上后台运行
一、问题: 今天在部署Python Flask项目到线上的时候,在AidLux系统的虚拟环境中,运行项目可以正常访问到api,但是在Xshell中,一旦Ctrl+C或者关闭ssh,他就停止了,api再也请求不到了。
二、nohup
1、nohup 是 no hang up 的缩写,就是不挂断的意思。
2、nohup命令:在系统上运行一个进程的时候,不想让其在你退出账号时关闭,即可用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。
3、nohup在不规定的情况下,所以输出内容会到nohup.out中。
三、nohup代码
run.py为Flask项目的启动脚本,在python环境中不间断的运行run.py,并且将标准内容和错误内容输出到flask.log这个日志文件中,即请求api若出现报错信息即可通过日志定位到问题
nohup python3 run.py >> /www/wwwroot/log/flask.log 2>&1 &
1
四、2>&1
0 表示stdin标准输入,用户键盘输入的内容
1 表示stdout标准输出,输出到显示屏的内容
2 表示stderr标准错误,报错内容
2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
五、nohup和&的区别
1、&才是后台运行
2、nohup : 不挂断的运行,注意并没有后台运行的功能,,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;