linux后台运行(守护程序)

原文链接:https://www.jianshu.com/p/be2b587a900e

  1. nohup:
    如果你熟悉Linux命令,你应该知道在Linux中后台运行可以通过nohup命令,例如我们要让gunicorn在后台运行,我们只需要运行nohup命令:
    (venv) $ nohup gunicorn -c gconfig.py run:app &

运行后你可以通过ps -e | grep gunicorn指令来查看到当前gunicorn的运行状态:

image

如果你选择的是uWSGI,同样也可以通过nohup命令来实现守护进程:
(venv) $ nohup uwsgi uwsgi.ini &

这样你就可以关闭连接服务器的终端,还能通过你的浏览器访问到你的Flask应用了!
2. supervisor
但是nohup运行的后台程序并不能够可靠的在后台运行,我们最好让我们的后台程序能够监控进程状态,还能在意外结束时自动重启,这就可以使用一个使用Python开发的进程管理程序supervisor。
参考:https://www.cnblogs.com/Dicky-Zhang/p/6171954.html
首先我们通过apt来安装supervisor:
$ sudo apt-get install supervisor

安装完成后,我们在/etc/supervisor/conf.d/目录下创建我们控制进程的配置文件,并以.conf结尾,这样将会自动应用到主配置文件当中,创建后添加如下的配置内容:
[program:demo]
command=/www/demo/venv/bin/gunicorn -c /pushy/blog/gconfig.py run:app
directory=/www/demo //项目目录
user=root
autorestart=true //设置自动重启
startretires=3 //重启失败3次

在上面的配置文件中,[program:demo]设置了进程名,这与之后操作进程的状态名称有关,为demo;command为进程运行的命令,必须使用绝对路径,并且使用虚拟环境下的gunicorn命令;user指定了运行进程的用户,这里设置为root
保存配置文件之后,我们需要通过命令来更新配置文件:
$ supervisorctl update

命令行将显示:demo: added process group,然后我们来启动这个demo进程:
$ supervisorctl start demo

当然你也直接在命令行输入supervisorctl进入supevisor的客户端,查看到当前的进程状态:
demo RUNNING pid 17278, uptime 0:08:51

通过stop命令便可以方便的停止该进程:
supervisor> stop demo

作者:congchao
链接:https://www.jianshu.com/p/be2b587a900e
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

展开阅读全文

没有更多推荐了,返回首页