linux 设置开机自动启动应用
作为一个开发,项目现在一般都是部署在虚拟机上的linux,数据库也是按照在l虚拟机上的linux,一旦关机了,在开机程序都没打开,又要一个个去开,很麻烦,所以现在我现在使用supervisor去做一个守护进程,然后项目就托管在supervisor上,然后开机让supervisor启动就可以了。
一般的,很多人会使用单元服务的形式去实现,首先在/etc/systemd/system或/lib/systemd/system目录(可能需要使用软连接)下创建一个service文件,如:
[Unit] Description=Supervisor process control system for UNIX Documentation=http://supervisord.org After=network.target [Service] ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown ExecReload=/usr/bin/supervisorctl -c /etc/supervisor/supervisord.conf $OPTIONS reload KillMode=process Restart=on-failure RestartSec=50s [Install] WantedBy=multi-user.target
然后就可以启用了:
#先看supervisor.service是否已经加到开机启动 sudo systemctl is-enabled supervisor.service #添加 sudo systemctl enable supervisor.service #验证 sudo systemctl is-enabled supervisor.service
下面介绍的是使用rc.local文件启动的方式:
ubuntu
ubuntu开机自启有多种方式,我采用下面的方式:
# 编辑/etc/rc.local文件,其实/etc/rc.local只是个会在开机时执行的脚本 sudo vim /etc/rc.local # 在exit 0 之前加入以下命令,下面是我的supervisord的启动命令路径:/usr/bin/supervisord sudo /usr/bin/supervisord #保存并退出就可以了。
CentOS
centos当然也可以使用开机执行脚本的方式来启动,因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权,如:
#因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 sudo chmod +x /etc/rc.d/rc.local #打开/etc/rc.d/rc.local,添加启动项,下面是我的supervisor在centos上的可执行文件路径 sudo /bin/supervisord #保存并退出就可以了。
关机后在开机,可通过进程程序是否启动:ps -ef | grep supervisord
或者查看自己托管在supervisor上的程序是否启动
一个专注于.NetCore的技术小白