美文网首页LinuxLinux学习之路linux
Linux 开机(脚本)启动顺序

Linux 开机(脚本)启动顺序

作者: Uchen | 来源:发表于2019-02-22 17:23 被阅读0次

    Linux 系统运行级别


    Linux 使用的是基于运行级(run-levels)概念的称为 SysVinit 的专用启动工具。 它在不同的系统上可能是完全不一样的, 所以不能认为一个脚本在某个 Linux 发行版上工作正常。

    SysVinit 以运行级的模式来工作,一般有 7 (从 0 到 6)个运行级 (实际上可以有更多的运行级,但都是用于特殊情况而且一般使用不到。 参见 init(8)以获得更多信息),每个运行级对应于一套设定好的任务, 当启动一个运行级的时候, 计算机就需要执行相应的任务。

    默认的运行级是 3,下面是对不同运行级的描述:

    0: 关闭计算机
    1: 单用户模式
    2: 无网络多用户模式
    3: 有网络多用户模式
    4: 保留作自定义,否则同运行级 3
    5: 同运行级 4,一般用于图形界面(GUI)登录(如 X的 xdm 或 KDE的 kdm)
    6: 重启动计算机

    可以使用 runlevel 命令查看:

    $ runlevel
    N 3
    

    也可以在 /etc/inittab 文件中看到以下:

    # Default runlevel. The runlevels used by RHS are:
    #   0 - halt (Do NOT set initdefault to this)
    #   1 - Single user mode
    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
    #   3 - Full multiuser mode
    #   4 - unused
    #   5 - X11
    #   6 - reboot (Do NOT set initdefault to this)
    # 
    id:3:initdefault:
    # System initialization.
    si::sysinit:/etc/rc.d/rc.sysinit
    

    也就是说我们系统的运行级别目前是3,那么需要看的就是 /etc/rc3.d 下的内容,其实里面都是软连接,所有的软链指向 /etc/init.d/ 中的脚本文件,命名规范如下:

    [K|S][number][service name] --> ../init.d/servicename

    • S 表示系统启动时需要启动的脚本
    • K 表示系统关闭时要关闭的脚本
    • [number] 表示的是该脚本的运行优先级,number 越小,脚本的运行优先级就越高
    • [service name] 表示的是服务的名称。

    因此我们如果需要定义一个服务启动的优先级(顺序),则需指定脚本的 number 即可。

    Linux 开机顺序


    1. 加载内核
    2. 启动 init(/etc/inittab)

    内核启动的第一个用户级别的进程,其 pid 始终为 1,其它的开机启动脚本都是通过是通过这个进程来启动的。

    1. 执行 /etc/rc.d/rc.sysinit

    这是 init 执行的第一个脚本,这个脚本主要工作是进行系统的初始化,如:设置系统字体、启动 swapping、设置主机名、装载声卡模块等。

    1. 执行 /etc/rc.d/rc*.d(rc0.d、rc1.d、rc2.d…rc6.d)

    这一步会运行各个运行级别的脚本。这些运行脚本是指通过 chkconfig 命令配置的开机启动各个级别所要要执行的程序。

    1. 执行 /etc/rc.d/rc.local(就是 /etc/rc.local)

    在各级别服务启动后,会执行该文件,如果不需要把所要执行的脚本配置为系统服务,也可以把所需执行的命令写到这个文件中,相比来说更为简单方便。

    1. /sbin/mingetty,等待用户登录

    自启动脚本实践


    • 开机以 root 权限执行脚本,修改 /etc/rc.d/rc.local 文件。
    • 用户登录时执行脚本,如设置一些环境变量,修改 /etc/profile 文件。
    • 特定用户登录时执行特定脚本,如设置该用户特定的环境变量,修改 ~/.bash_profile 文件。
    文件 说明
    /etc/profile 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从 /etc/profile.d 目录的配置文件中搜集 shell 的设置。
    /etc/bashrc 为每一个运行bash shell的用户执行此文件。当bash shell被打开时,该文件被读取。
    ~/.bash_profile 用户专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的 .bashrc文件。
    ~/.bashrc 该文件包含专用于你的 bash shell 的 bash 信息,当登录时以及每次打开新的 shell 时,该文件被读取。
    ~/.profile 在 Debian 中使用 .profile 文件代替 .bash_profile 文件 .profile(由Bourne Shell和Korn Shell使用)和 .login(由C Shell使用)两个文件是 .bash_profile 的同义词,目的是为了兼容其它 Shell。
    ~/.bash_logout 当每次退出系统(退出bash shell)时,执行该文件。

    相关文章

      网友评论

        本文标题:Linux 开机(脚本)启动顺序

        本文链接:https://www.haomeiwen.com/subject/ypoeyqtx.html