您的位置:

Linux开机自启动脚本详解

一、什么是开机自启动脚本

开机自启动脚本是指在操作系统启动时自动执行的脚本文件,主要用于配置系统环境、启动进程等操作。一般情况下,这些脚本都存放在系统的启动目录中。

二、开机自启动脚本的优点

开机自启动脚本具有以下优点:

1、无人值守:由于是自动启动,无需人工干预。

2、自动化管理:可以通过修改脚本文件的方式来添加、删除需要自动启动的项目,方便快捷。

3、节省时间:相较于手动开启多个进程,使用自启动脚本可以节约大量的时间。

三、开机自启动脚本的实现方式

在Linux系统中,有多种方式可实现开机自启动,下面我们来详细介绍两种比较常见的方式。

1. 将启动脚本存放在/etc/rc.d/init.d/目录下

这是比较常见的一种方式,步骤如下:

1、编写脚本:比如我们要在系统启动时启动nginx服务,则需要编写一个启动nginx的脚本文件,可以取名为nginx。

#!/bin/bash
#
# nginx - this script starts and stops the nginx daemin
#
# 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

3、将脚本添加至系统启动项中:

chkconfig --add nginx
chkconfig nginx on

4、确认nginx是否成功添加至启动项中:

chkconfig --list nginx

执行以上命令,如果看到如下内容,则说明nginx已成功添加启动项:

nginx           0:off   1:off   2:on    3:on    4:on    5:on    6:off

2. 将启动脚本保存在/etc/systemd/system/目录下

这是一种比较新的启动方式,步骤如下:

1、编写脚本:同上,以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

2、将脚本保存至/etc/systemd/system/目录下:

cp nginx.service /etc/systemd/system/

3、更新systemd配置并启用服务:

systemctl daemon-reload
systemctl start nginx
systemctl enable nginx

4、确认nginx是否成功添加至启动项中:

systemctl list-unit-files|grep nginx

若出现如下内容,则说明nginx已成功添加:

nginx.service                        enabled

四、开机自启动脚本的注意事项

1、应该将启动脚本存放在系统的启动目录下,以确保系统启动时会自动执行。

2、脚本文件必须要有可执行权限,才能被自动执行。

3、在写脚本时,应该加上一些判断语句,以确保脚本的正确性。

4、应该查看系统日志,以确保脚本是否被正确执行。

5、注意手动启动服务和开机自启动服务之间的冲突问题。

五、总结

开机自启动脚本在Linux系统中有着广泛的应用。本文详细介绍了两种实现方式,并提出了一些注意事项,希望能够帮助读者更好地理解和使用开机自启动脚本。