设置Linux开机启动程序

2017-10-28|Categories: Linux|

chkconfig

CentOS 7之前的版本使用这种方式。

对于需要开机启动的应用程序,例如MySQL/MariaDB,首先把它自带的启动脚本复制到/etc/init.d/

cp /apps/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

现在就可以通过/etc/init.d/mysqld start启动MySQL。

然后用chkconfig命令添加开机启动:

chkconfig --add mysqld

现在就可以通过service mysqld start来启动,可以少敲几次键盘。

这条命令的实质就是:根据/etc/init.d/mysqld脚本开头的# chkconfig: 2345 64 36这一行,分别创建相应的软连接到/etc/rc.d/rc[0-6].d/

如图,这里的2345表示脚本将在2/3/4/5这四个运行级别自动启动,而在余下的0/1/6三个运行级别不会自动启动;64表示脚本执行的顺序(优先级)。从上图箭头指向的两个方框可以看到,最终创建的软连接名称里面,64前面会有一个大写的S,表示Start;36前面的K表示Kill,init进程碰到K开头的脚本就会把它Kill掉(比如从RunLevel 3切换到RunLevel 1的时候)。

还有一种情况:启动脚本没有指定默认的运行级别,例如Nginx官方的启动脚本示例(未包含在Nginx源码包中,需要复制粘贴,并修改配置文件路径):

# chkconfig: - 85 15

这里的-(减号)表示「默认不在任何运行级别自动启动」,我们就必须手动开启:

chkconfig --add nginx
chkconfig nginx on
# 确认
chkconfig --list | grep nginx

systemd

从CentOS 7开始使用这种方式。

# 启动
systemctl start httpd
# 开机自动启动
systemctl enable httpd

/etc/rc.local

把命令写入/etc/rc.local这个文件,不需要编写复杂的脚本。详见《CentOS 7虚拟机安装MEOW代理》这篇文章的评论。

Leave A Comment