Fedora 20采用systemd作为初始化系统,启动脚本主要分布在核心配置目录与用户空间,系统初始化阶段,相关unit文件位于/usr/lib/systemd/system/及/etc/systemd/system/,前者存放默认服务定义,后者存放管理员自定义或修改的配置;用户服务配置则可在~/.config/systemd/user/目录下管理,支持用户级服务独立于系统运行,这些脚本通过依赖关系定义启动顺序,涵盖内核模块加载、系统服务启动至用户会话服务配置的全流程,实现从底层初始化到上层应用服务的精细化管理。
在Linux系统中,启动脚本(或称初始化脚本)是系统引导过程中自动执行的关键程序,负责启动系统服务、加载配置、设置运行环境等,对于仍在使用Fedora 20(2013年发布)的老旧系统或特定场景需求,了解其启动脚本的位置和管理方式尤为重要,Fedora 20默认采用SysV init初始化系统(而非后续版本采用的systemd),因此启动脚本的位置和管理逻辑与systemd系统有显著区别,本文将详细梳理Fedora 20中启动脚本的存放位置、作用及管理方法。
核心概念:Fedora 20的SysV init初始化流程
在介绍启动脚本位置前,需先理解Fedora 20的初始化流程,SysV init通过运行级别(Runlevel)来管理系统状态,每个运行级别对应一套系统服务的启动/停止组合,Fedora 20默认支持以下运行级别:
- 0:关机(halt)
- 1:单用户模式(救援模式)
- 2-5:多用户模式(其中3为命令行模式,5为图形界面模式)
- 6:重启(reboot)
启动脚本的核心作用就是:在系统切换到特定运行级别时,自动启动或停止对应的服务。

启动脚本的“大本营”:/etc/rc.d/init.d/
Fedora 20中,系统服务的核心启动脚本统一存放在/etc/rc.d/init.d/目录下,该目录包含了所有系统服务的初始化脚本,例如网络服务(network)、Web服务(httpd)、数据库服务(mysqld)等。
脚本的基本结构
这些脚本通常采用Bash编写,遵循SysV init的规范,支持至少三个核心操作参数:
start:启动服务stop:停止服务restart:重启服务status:查看服务状态reload:重新加载配置(部分服务支持)
示例:查看network服务的状态
/etc/rc.d/init.d/network status
或通过service命令简化操作(service是/etc/rc.d/init.d/目录的命令行包装器):
service network status
脚本的命名规范
脚本命名通常与服务名称保持一致,
httpd:Apache HTTP服务器sshd:OpenSSH服务iptables:防火墙规则服务
运行级别脚本:/etc/rc.d/rc[0-6].d/
仅有核心脚本还不够,系统还需要知道在哪个运行级别启动或停止哪些服务,这就要靠/etc/rc.d/目录下的运行级别控制脚本:rc0.d~rc6.d(对应运行级别0-6)。
脚本的链接机制
rc[0-6].d目录下存放的并非实际脚本,而是指向/etc/rc.d/init.d/中脚本的符号链接,链接名的命名规则为:
S[序号][服务名]:表示启动服务(S=Start)K[序号][服务名]:表示停止服务(K=Kill)
序号决定了脚本的执行顺序:数字越小,执行优先级越高(例如S01sysstat会先于S10network执行)。
示例:查看运行级别3的启动脚本
ls -l /etc/rc.d/rc3.d/
输出可能类似:
lrwxrwxrwx 1 root root 14 10月 15 2020 S01sysstat -> ../init.d/sysstat
lrwxrwxrwx 1 root root 14 10月 15 2020 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 14 10月 15 2020 S55sshd -> ../init.d/sshd
...
S10network:在运行级别3启动网络服务(序号10)K01sysstat:在切换到其他运行级别时停止sysstat服务(序号01,优先停止)
系统初始化入口:/etc/inittab
/etc/inittab是SysV init的核心配置文件,定义了系统的默认运行级别、初始化流程等,Fedora 20中,该文件的关键作用包括:
设置默认运行级别
通过id:5:initdefault:指定系统默认启动为运行级别5(图形界面模式),若需改为命令行模式,可修改为id:3:initdefault:。
定义初始化脚本执行流程
si::sysinit:/etc/rc.d/rc.sysinit行表示:系统启动时,首先执行/etc/rc.d/rc.sysinit脚本(该脚本负责挂载文件系统、设置主机名、加载内核模块等基础初始化)。
运行级别切换脚本
l5:5:wait:/etc/rc.d/rc 5表示:切换到运行级别5时,执行/etc/rc.d/rc 5脚本(该脚本会遍历rc5.d目录下的S*链接启动服务,K*链接停止服务)。
用户自定义脚本:/etc/rc.local
除了系统服务,用户有时需要添加自定义的启动命令(如启动自研程序、设置环境变量等),Fedora 20提供了/etc/rc.local作为用户自定义启动脚本入口。
脚本的作用
/etc/rc.local会在系统进入默认运行级别后执行(由/etc/rc.d/rc脚本调用),默认情况下,该文件可能为空或仅有注释。
使用方法
编辑/etc/rc.local,添加需要执行的命令(需确保命令有执行权限):
#!/bin/bash # 自定义启动命令示例 echo "Starting my custom service..." > /var/log/rclocal.log /usr/local/bin/my_service start
注意:需为文件添加可执行权限:
chmod +x /etc/rc.local
启用rc.local服务
Fedora 20中,rc.local默认可能未启用,需确保rc-local服务运行:
chkconfig --add rc-local service rc-local

