Linux后台程序管理
文章目录
通常情况下,Linux终端执行的命令是运行在前台的,一个命令执行完毕,才可以执行下一个命令,且终端一关闭,进程会被kill掉。但是,有时候希望进程运行在后台,可以采用下面几种方法:
-
&大法
在命令后面添加&标记,则命令在当前终端的后台执行,用户可以接着执行其他命令。
-
nohup
命令格式一般为 nohup command nohup command & 差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行
-
screen/tmux/byobu
这些其实是终端管理器,相当于终端一直存在,其上执行的命令要在后台运行要靠前2者实现。
-
supervisor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。 安装supervisor Debian / Ubuntu可以直接通过apt安装: # apt-get install supervisor 然后,给我们自己开发的应用程序编写一个配置文件,让supervisor来管理它。每个进程的配置文件都可以单独分拆,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名,例如,app.conf定义了一个gunicorn的进程: [program:app] command=/usr/bin/gunicorn -w 1 wsgiapp:application directory=/srv/www user=www-data 其中,进程app定义在[program:app]中,command是命令,directory是进程的当前目录,user是进程运行的用户身份。 重启supervisor,让配置文件生效,然后运行命令supervisorctl启动进程: # supervisorctl start app 停止进程: # supervisorctl stop app 如果要在命令行中使用变量,就需要自己先编写一个shell脚本: #!/bin/sh /usr/bin/gunicorn -w `grep -c ^processor /proc/cpuinfo` wsgiapp:application 然后,加上x权限,再把command指向该shell脚本即可。
文章作者 carter2005
上次更新 2018-01-09