Fedora 20启动脚本位置详解,从系统初始化到用户服务配置

admin
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)

启动脚本的核心作用就是:在系统切换到特定运行级别时,自动启动或停止对应的服务。

Fedora 20启动脚本位置详解,从系统初始化到用户服务配置

启动脚本的“大本营”:/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
文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码