在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。
守护进程(daemon)是指在后台运行的,没有控制终端与之相连的进程。它独立于控制终端,周期性地执行某种任务。Linux的大多数服务器就是用守护进程的方式实现的。如web服务器进程http等。守护进程在后台运行,类似于Windows中的系统服务。
实现守护进程的软件有很多, 这次简单讲解Supervisor的使用
1. 安装
yum install supervisor
2. 编辑配置文件 在 /etc/supervisord.d 创建 xxx.ini 文件, 注意输出日志文件需要先创建一个,否则可能启动不了
#配置程序名称 [program:xxxx] #运行程序的命令 command=dotnet xxxx.dll --urls="http://*:8010;" #命令执行的目录 directory=/usr/dotnetcore/xxxx #进程环境变量 environment=ASPNETCORE_ENVIRONMENT=Production #进程执行的用户身份 user=root #进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号默认为TERM 。当用设定的信号去干掉进程,退出码会被认为是expected,非必须设置 stopsignal=INT #如果是true的话,子进程将在supervisord启动后被自动启动,默认就是true,非必须设置 autostart=true #这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启 autorestart=true #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了,默认值为1 。非必须设置 startsecs=1 #错误日志文件 stderr_logfile=/var/log/xxxx/xxxx.err.log #输出日志文件 stdout_logfile=/var/log/xxxx/xxxx.out.log
3. 启动守护进程
systemctl start supervisord
4. 检查一下结果
ps -aux | grep "xxxx.dll"
5. 将守护进程添加到开机自启
systemctl enable supervisord
这样下一次就会开启自启