在Linux系统中,init.d(初始化目录)是一个非常重要的目录,它包含了启动和停止系统服务的脚本。当你打开电脑,操作系统会按照一定的顺序启动一系列服务,以确保系统的正常运行。下面,我们就来揭秘init.d脚本是如何启动系统服务的。
初始化进程(init进程)
在Linux系统中,init进程是系统启动的第一个进程,其进程ID(PID)为1。init进程负责初始化系统,并启动其他系统服务。在早期的Linux系统中,init进程通常是一个名为init的shell脚本。
init.d目录结构
init.d目录通常位于/etc目录下,里面包含了各种系统服务的启动脚本。这些脚本通常以服务名称命名,并遵循一定的命名规则。例如,httpd服务对应的启动脚本可能命名为/etc/init.d/httpd。
脚本结构
init.d脚本通常包含以下几个部分:
- 描述信息:脚本顶部通常包含一些描述信息,如脚本作者、版本、描述等。
- 功能定义:定义脚本执行的主要功能,如启动、停止、重启、状态查询等。
- 配置变量:设置一些变量,如服务名称、日志文件路径等。
- 实际功能实现:根据功能定义,实现具体的启动、停止、重启、状态查询等功能。
以下是一个简单的init.d脚本示例:
#!/bin/sh
#
# httpd - Apache HTTP Server
#
# Source function library.
. /etc/init.d/functions
# Define your variables here
HTTPD=/usr/sbin/httpd
HTTPD_CGIBIN=/usr/lib/cgi-bin
HTTPD_PIDFILE=/var/run/httpd.pid
DESC="Apache HTTP Server"
# Start/Stop/Restart/Status functions
start() {
echo -n $"Starting $DESC: "
$HTTPD &
echo $"done."
}
stop() {
echo -n $"Stopping $DESC: "
killproc $HTTPD
echo $"done."
}
restart() {
stop
start
}
status() {
echo -n $"Checking $DESC status: "
status_of_proc $HTTPD $DESC && echo $"running" || echo $"stopped"
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
esac
init.d脚本启动过程
当系统启动时,init进程会读取/etc/inittab文件,该文件定义了init进程要启动的脚本。在早期的Linux系统中,/etc/inittab文件使用表格形式定义了各种运行级别(runlevel)和对应的脚本。
以下是一个/etc/inittab文件示例:
”` ::sysinit:/etc/init.d/hwclock.sh ::sysinit:/etc/init.d/local_fs ::sysinit:/etc/init.d/swap ::sysinit:/etc/init.d/networking ::sysinit:/etc/init.d/securelevel ::sysinit:/etc/init.d/auditd ::sysinit:/etc/init.d/urandom ::sysinit:/etc/init.d/hostname.sh ::sysinit:/etc/init.d/ypbind ::sysinit:/etc/init.d/ntpd ::sysinit:/etc/init.d/iscsi ::sysinit:/etc/init.d/iscsid ::sysinit:/etc/init.d/firstboot ::sysinit:/etc/init.d/NetworkManager ::sysinit:/etc/init.d/NetworkManager-dispatcher ::sysinit:/etc/init.d/NetworkManager-system-ctls ::sysinit:/etc/init.d/NetworkManager-wait-online ::sysinit:/etc/init.d/dbus ::sysinit:/etc/init.d/xdg-user-sessions ::sysinit:/etc/init.d/xdg-display-manager ::sysinit:/etc/init.d/xdg-screensaver ::sysinit:/etc/init.d/systemd-firstboot ::sysinit:/etc/init.d/plymouth ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-boot-progress ::sysinit:/etc/init.d/plymouth-quit-wait ::sysinit:/etc/init.d/plymouth-quit-early ::sysinit:/etc/init.d/plymouth-start ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit:/etc/init.d/plymouth-display-manager ::sysinit
