当前位置:首页 > RockyLinux > 正文

RockyLinux init.d脚本编写方法(从零开始掌握Linux系统启动脚本配置)

在RockyLinux等基于RHEL的系统中,虽然现代版本默认使用systemd作为初始化系统,但为了兼容旧有应用或特定需求,我们有时仍需编写传统的init.d脚本来管理服务。本文将手把手教你如何编写一个标准、可用的RockyLinux init.d脚本,即使你是Linux小白也能轻松上手。

RockyLinux init.d脚本编写方法(从零开始掌握Linux系统启动脚本配置) init.d脚本  Linux服务管理 系统启动脚本 RockyLinux服务配置 第1张

什么是init.d脚本?

init.d脚本是位于/etc/init.d/目录下的Shell脚本,用于控制服务的启动、停止、重启和状态查询。它们通常由SysV init系统调用,在RockyLinux 8/9中虽已过渡到systemd,但仍可通过兼容层支持init.d脚本。

编写RockyLinux init.d脚本的基本结构

一个合格的init.d脚本应包含以下要素:

  • 标准的头部注释(含chkconfig信息)
  • 支持start、stop、restart、status等参数
  • 使用/etc/init.d/functions提供的函数增强可读性
  • 正确返回退出状态码

实战:编写一个简单的Web服务init.d脚本

假设我们要为一个名为myweb的Python Web应用创建服务脚本。该应用通过命令/usr/bin/python3 /opt/myweb/app.py启动。

步骤1:创建脚本文件

以root身份创建脚本文件:

sudo nano /etc/init.d/myweb

步骤2:编写脚本内容

将以下内容粘贴到文件中:

#!/bin/bash## myweb       Startup script for the MyWeb application## chkconfig: 2345 80 20# description: MyWeb is a simple Python web server.# processname: myweb# config: /etc/myweb/config.conf# pidfile: /var/run/myweb.pid# Source function library.. /etc/init.d/functions# Define variablesAPP_NAME="myweb"APP_PATH="/opt/myweb/app.py"PYTHON_CMD="/usr/bin/python3"PID_FILE="/var/run/myweb.pid"LOCK_FILE="/var/lock/subsys/myweb"start() {    echo -n $"Starting $APP_NAME: "    if [ -f $PID_FILE ]; then        echo_failure        echo        exit 1    fi    daemon --pidfile=$PID_FILE $PYTHON_CMD $APP_PATH &    RETVAL=$?    echo    [ $RETVAL -eq 0 ] && touch $LOCK_FILE    return $RETVAL}stop() {    echo -n $"Shutting down $APP_NAME: "    killproc -p $PID_FILE    RETVAL=$?    echo    [ $RETVAL -eq 0 ] && rm -f $LOCK_FILE $PID_FILE    return $RETVAL}restart() {    stop    start}status() {    status -p $PID_FILE $APP_NAME}case "$1" in    start)        start        ;;    stop)        stop        ;;    restart)        restart        ;;    status)        status        ;;    *)        echo $"Usage: $0 {start|stop|restart|status}"        exit 1esacexit $?

步骤3:设置权限并注册服务

保存后,赋予执行权限:

sudo chmod +x /etc/init.d/myweb

使用chkconfig注册服务(确保已安装initscripts包):

sudo chkconfig --add mywebsudo chkconfig myweb on

步骤4:测试服务

现在你可以像操作传统服务一样使用它:

sudo service myweb startsudo service myweb statussudo service myweb stop

关键要点解析

  • chkconfig行:定义服务在哪些运行级别启动(2345),以及启动/停止优先级(80/20)
  • functions库:提供daemonkillprocstatus等标准化函数
  • PID与LOCK文件:用于跟踪进程状态,避免重复启动
  • 退出状态码:必须正确返回0(成功)或非0(失败),否则服务管理会出错

注意事项

虽然init.d脚本在RockyLinux中仍可使用,但官方推荐使用systemd unit文件

通过本教程,你已经掌握了RockyLinux init.d脚本的编写方法、Linux服务管理的基础知识、系统启动脚本的结构规范,以及如何完成完整的RockyLinux服务配置流程。现在,你可以为自己的应用创建可靠的服务脚本了!