一、什么是开机自启动脚本
开机自启动脚本是指在操作系统启动时自动执行的脚本文件,主要用于配置系统环境、启动进程等操作。一般情况下,这些脚本都存放在系统的启动目录中。
二、开机自启动脚本的优点
开机自启动脚本具有以下优点:
- 无人值守:由于是自动启动,无需人工干预。
- 自动化管理:可以通过修改脚本文件的方式来添加、删除需要自动启动的项目,方便快捷。
- 节省时间:相较于手动开启多个进程,使用自启动脚本可以节约大量的时间。
三、开机自启动脚本的实现方式
在Linux系统中,有多种方式可实现开机自启动,下面我们来详细介绍两种比较常见的方式。
1. 将启动脚本存放在/etc/rc.d/init.d/目录下
这是比较常见的一种方式,步骤如下:
- 编写脚本:比如我们要在系统启动时启动nginx服务,则需要编写一个启动nginx的脚本文件,可以取名为nginx。
#!/bin/bash
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: nginx is a World Wide Web server.
# It is used to serve HTTP and HTTPS both.
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
lockfile=/var/lock/subsys/nginx
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
reload() {
echo -n $"Reloading $prog: "
killproc $nginx -HUP
retval=$?
echo
}
force_reload() {
restart
}
configtest() {
$nginx -t -c $NGINX_CONF_FILE
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
reload)
rh_status_q || exit 0
$1
;;
force-reload)
force_reload
;;
restart)
stop
start
;;
status)
rh_status
;;
configtest)
configtest
;;
*)
echo $"Usage: $prog {start|stop|restart|condrestart|reload|force-reload|status|help|configtest}"
exit 1
esac
exit $?
其中,必须包含如下几个函数:start、stop、reload等,用于启动、停止、重启nginx服务等操作。 2. 赋予脚本可执行权限:
chmod +x nginx
- 将脚本添加至系统启动项中:
chkconfig --add nginx
chkconfig nginx on
- 确认nginx是否成功添加至启动项中:
chkconfig --list nginx
执行以上命令,如果看到如下内容,则说明nginx已成功添加启动项:
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
2. 将启动脚本保存在/etc/systemd/system/目录下
这是一种比较新的启动方式,步骤如下:
- 编写脚本:同上,以nginx服务为例,需要编写nginx.service文件。
[Unit]
Description=The nginx HTTP Server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
- 将脚本保存至/etc/systemd/system/目录下:
cp nginx.service /etc/systemd/system/
- 更新systemd配置并启用服务:
systemctl daemon-reload
systemctl start nginx
systemctl enable nginx
- 确认nginx是否成功添加至启动项中:
systemctl list-unit-files|grep nginx
若出现如下内容,则说明nginx已成功添加:
nginx.service enabled
四、开机自启动脚本的注意事项
- 应该将启动脚本存放在系统的启动目录下,以确保系统启动时会自动执行。
- 脚本文件必须要有可执行权限,才能被自动执行。
- 在写脚本时,应该加上一些判断语句,以确保脚本的正确性。
- 应该查看系统日志,以确保脚本是否被正确执行。
- 注意手动启动服务和开机自启动服务之间的冲突问题。
五、总结
开机自启动脚本在Linux系统中有着广泛的应用。本文详细介绍了两种实现方式,并提出了一些注意事项,希望能够帮助读者更好地理解和使用开机自启动脚本。