在 CentOS 系统中,init.d 脚本 是一种用于管理系统服务的传统方式。虽然现代 CentOS 7+ 更推荐使用 systemd,但在许多老版本(如 CentOS 6)或特定场景下,掌握如何编写 init.d 脚本仍然非常有用。本文将手把手教你如何编写一个完整的 CentOS init.d 脚本,实现自定义程序的开机自启与服务管理。
在 CentOS 等基于 SysV init 的系统中,/etc/init.d/ 目录存放着所有系统服务的启动脚本。这些脚本通常支持 start、stop、restart、status 等命令,用于控制服务的运行状态。
通过编写自己的 init.d 脚本,你可以将任意程序(比如一个 Python Web 应用、自定义守护进程等)注册为系统服务,实现开机自动启动和统一管理。
假设我们要为一个名为 myapp 的程序创建服务脚本。该程序位于 /opt/myapp/myapp.py,使用 Python 运行。
步骤 1:创建脚本文件
以 root 权限在 /etc/init.d/ 目录下创建脚本:
sudo vi /etc/init.d/myapp 步骤 2:编写脚本内容
将以下内容复制到脚本中(已添加详细注释):
#!/bin/bash# chkconfig: 2345 80 20# description: My Custom Application Service# Source function library.. /etc/rc.d/init.d/functions# 定义变量APP_NAME="myapp"APP_PATH="/opt/myapp/myapp.py"PID_FILE="/var/run/myapp.pid"LOG_FILE="/var/log/myapp.log"USER="myuser"start() { echo -n $"Starting $APP_NAME: " daemon --user=$USER --pidfile=$PID_FILE \ python3 $APP_PATH >> $LOG_FILE 2>&1 & echo $! > $PID_FILE retval=$? echo [ $retval -eq 0 ] && touch /var/lock/subsys/$APP_NAME return $retval}stop() { echo -n $"Shutting down $APP_NAME: " killproc -p $PID_FILE retval=$? echo [ $retval -eq 0 ] && rm -f /var/lock/subsys/$APP_NAME $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 2esacexit $? 关键说明:
# chkconfig: 2345 80 20:表示在运行级别 2、3、4、5 启动,启动优先级 80,停止优先级 20。. /etc/rc.d/init.d/functions:加载系统提供的函数库(如 daemon、killproc 等)。PID_FILE:记录进程 ID,便于后续停止或查询状态。/opt/myapp/ 和日志目录存在,并且 myuser 用户有权限访问。脚本写好后,需要赋予执行权限,并使用 chkconfig 注册为系统服务:
# 添加执行权限sudo chmod +x /etc/init.d/myapp# 注册服务(仅 CentOS 6 及更早版本有效)sudo chkconfig --add myapp# 设置开机自启sudo chkconfig myapp on# 查看是否注册成功chkconfig --list | grep myapp 现在,你就可以像操作其他服务一样管理你的程序了:
sudo service myapp startsudo service myapp stopsudo service myapp restartsudo service myapp status myuser)并赋予权限。systemd。若需长期维护,建议学习编写 .service 文件。/var/log/messages 或你自定义的日志文件。通过本文,你已经学会了如何编写一个标准的 CentOS init.d 脚本,掌握了 Linux 服务管理 的基础技能,并能实现程序的 开机自启。虽然现代系统逐渐转向 systemd,但理解 init.d 机制对运维工作仍有重要价值。
记住关键词:CentOS init.d脚本、Linux服务管理、系统启动脚本、CentOS开机自启——它们是你深入 Linux 系统管理的重要基石。
祝你在 Linux 运维之路上越走越远!
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025129860.html