在RockyLinux等基于RHEL的系统中,虽然现代版本默认使用systemd作为初始化系统,但为了兼容旧有应用或特定需求,我们有时仍需编写传统的init.d脚本来管理服务。本文将手把手教你如何编写一个标准、可用的RockyLinux init.d脚本,即使你是Linux小白也能轻松上手。
init.d脚本是位于/etc/init.d/目录下的Shell脚本,用于控制服务的启动、停止、重启和状态查询。它们通常由SysV init系统调用,在RockyLinux 8/9中虽已过渡到systemd,但仍可通过兼容层支持init.d脚本。
一个合格的init.d脚本应包含以下要素:
/etc/init.d/functions提供的函数增强可读性假设我们要为一个名为myweb的Python Web应用创建服务脚本。该应用通过命令/usr/bin/python3 /opt/myweb/app.py启动。
以root身份创建脚本文件:
sudo nano /etc/init.d/myweb 将以下内容粘贴到文件中:
#!/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 $? 保存后,赋予执行权限:
sudo chmod +x /etc/init.d/myweb 使用chkconfig注册服务(确保已安装initscripts包):
sudo chkconfig --add mywebsudo chkconfig myweb on 现在你可以像操作传统服务一样使用它:
sudo service myweb startsudo service myweb statussudo service myweb stop daemon、killproc、status等标准化函数虽然init.d脚本在RockyLinux中仍可使用,但官方推荐使用systemd unit文件 通过本教程,你已经掌握了RockyLinux init.d脚本的编写方法、Linux服务管理的基础知识、系统启动脚本的结构规范,以及如何完成完整的RockyLinux服务配置流程。现在,你可以为自己的应用创建可靠的服务脚本了!
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129799.html