在Debian系统中,init.d脚本是一种传统但仍然广泛使用的服务管理方式。即使现在许多系统已转向systemd,了解如何编写和配置init.d脚本对于维护旧系统、嵌入式设备或深入理解Linux启动机制仍非常有价值。本文将手把手教你如何为Debian系统编写一个完整的init.d脚本,适合完全没有经验的小白用户。
/etc/init.d/ 目录存放的是系统启动时由SysV init系统调用的Shell脚本。这些脚本用于启动、停止、重启或查询系统服务的状态。每个脚本能接收如 start、stop、restart、status 等参数。
假设我们要创建一个名为 myapp 的服务,它运行一个简单的Python Web服务器(仅作演示)。以下是完整步骤:
首先,我们创建一个简单的后台程序。例如,创建 /opt/myapp/app.py:
#!/usr/bin/env python3import http.serverimport socketserverPORT = 8080with socketserver.TCPServer(("", PORT), http.server.SimpleHTTPRequestHandler) as httpd: print("Serving at port", PORT) httpd.serve_forever() 赋予执行权限:
sudo chmod +x /opt/myapp/app.py 创建文件 /etc/init.d/myapp,内容如下:
#!/bin/bash### BEGIN INIT INFO# Provides: myapp# Required-Start: $local_fs $network $named $time $syslog# Required-Stop: $local_fs $network $named $time $syslog# Default-Start: 2 3 4 5# Default-Stop: 0 1 6# Description: My custom application service### END INIT INFODAEMON="/usr/bin/python3"DAEMON_ARGS="/opt/myapp/app.py"NAME=myappPIDFILE=/var/run/$NAME.pidSCRIPTNAME=/etc/init.d/$NAME. /lib/lsb/init-functionscase "$1" in start) log_daemon_msg "Starting $NAME" start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON --background --make-pidfile -- \ $DAEMON_ARGS log_end_msg $? ;; stop) log_daemon_msg "Stopping $NAME" start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --retry=TERM/30/KILL/5 rm -f $PIDFILE log_end_msg $? ;; status) status_of_proc -p $PIDFILE "$DAEMON" "$NAME" && exit 0 || exit $? ;; restart) $0 stop $0 start ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2 exit 3 ;;esac 赋予脚本执行权限:
sudo chmod +x /etc/init.d/myapp 然后使用 update-rc.d 命令将其加入开机启动:
sudo update-rc.d myapp defaults 现在你可以测试服务:
sudo service myapp startsudo service myapp statussudo service myapp stop ### BEGIN INIT INFO部分)非常重要,它告诉系统该服务的依赖关系和运行级别。start-stop-daemon 是Debian系发行版中用于安全启动/停止守护进程的标准工具。. /lib/lsb/init-functions 可以调用标准的日志函数(如 log_daemon_msg),提升脚本专业性。如果服务无法启动,请检查:
--quiet 参数查看错误)通过本教程,你已经掌握了Debian init.d脚本编写的基本方法。虽然现代系统多采用systemd,但在许多生产环境中,尤其是老旧或资源受限的设备上,SysV init和init.d脚本依然不可或缺。掌握这项技能,不仅能帮助你更好地进行Linux系统服务管理,还能加深对操作系统启动流程的理解。
希望这篇Debian开机启动脚本教程对你有帮助!如果你是初学者,建议多动手实践,并参考系统中已有的init.d脚本(如 /etc/init.d/cron)来学习更多技巧。祝你在Shell脚本教程的学习之路上越走越远!
本文由主机测评网于2025-12-26发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251212853.html