`
f543711700
  • 浏览: 326267 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Slackware启动脚本与System V启动脚本的区别

 
阅读更多
Slackware版本:Slackware 7.0及以上

Slackware 使用BSD风格的init脚本,而很多别的发行版使用System V风格的init脚本。SysV和BSD脚本都是能让人读懂的,即它们都是shell脚本,而不是已编译的程序。主要的区别在于脚本是如何设计的。

SysV脚本倾向于接受诸如start、stop、restart之类的参数,依它所启动的程序而定。所以你可以用 /etc/init.d/bind start 这样的命令来启动BIND,并用 /etc/init.d/bind stop 来停止BIND。 内容来自dedecms

SysV的启动还倾向于使用符号链接来组织启动进程,例如在 /etc/rc.d/rc.4/中,可能会有指向别的目录中的真正的脚本的各种各样的符号链接。这些链接的命令会像是 S10network、S25xdm之类,其中的S表示启动(start)该项服务(如果是K,则表示kill),而数字指定了脚本执行的顺序。

SysV风格的启动脚本的主要优点在于能够设置成自动配置许多东西。例如,若你进入runlevel 6,你可以建立一个链接叫K75bind来终止BIND,前提是链接所指向的文件已经设置好来做这件事。

SysV风格脚本的主要缺点是太过弯弯绕。假如我想增加一个服务,我要先写一个SysV风格的脚本(不是容易的事),它至少要处理“start(还可能有“stop)。然后,我必须确保在每个要运行这个服务的runlevel中正确地设置好符号链接。如果恰好这个服务需要在已经连续编号的两个脚本之间运行,我就需要做一些对符号链接重新编号的工作(例如,S10xxx和S11yyy已经存在,而我想让zzzz在它们之间运行,我就需要对前两者之一重新建立符号链接来把zzzz挤进去)。 dedecms.com

想暂时改变SysV的启动进程也是非常痛苦的事情。假如我不想在下次启动时运行xxx服务,最简单的办法是删除S10xxx这个链接,不算难吧?但如果我想在每个runlevel中都去掉它,我就需要从每个有关目录中删除S10xxx这个链接。然后,假如我改了主意,想重新运行xxx,我需要手工重新建立所有的符号链接。

这样子无疑是在已经很复杂的启动进程上叠床架屋,而Slackware是不会这么做的:它用BSD风格的启动脚本。

BSD风格的脚本是直接了当的shell脚本,它们倾向于顺序运行,而不需要start或stop之类参数。只要系统进入了它们的runlevel就会执行,就这么简单。

BSD风格的主要缺点是你需要一些其他方法来控制后台服务。例如,若我要停止BIND,我要先用命令 ps ax|grep named 找出 named的PID,然后kill这个PID(或者用这个pid的文件名)。但是我不能简单地下个命令 /etc/init.d/bind stop (除非我已经写了个这样的SysV脚本)。

BSD风格脚本的主要优点是它们非常容易阅读和编辑。例如,若我想增加一个服务zzzz,我可以在 /etc/rd.d/rc.local中增加一行 /usr/local/bin/zzzz,这样只要是执行rc.local的runlevel,zzzz就会随之运行。假如我只想在runlevel 4执行zzzz,我可以把它放在 /etc/rc.d/rc.4 (不是目录,而是一个脚本)中。如果我要改变执行顺序,我只要把zzzz放在适当的服务之间,多数编辑器都支持在文件中间插入文本(就算ed都支持)。还有,你可以用注释的方式停止一个服务,然后去掉注释让它重新运行。 copyright dedecms

因此,当多数发行版采用SysV风格时,Slackware采用了BSD风格。对于许多Slackware用户,BSD风格的易用性胜过SysV风格的强大功能。当然,你可以有自己的意见。

与普遍的观点相反,从一种风格转到另一种并不那么困难,只要把inittab和rc文件从一个系统拷贝到另一个系统即可。init程序自身没有改变,所谓“风格多是在inittab和它所调用的脚本中设置的。

译注:现在slackware为了提高兼容性,在/etc/rc.d/提供了rc.sysvinit脚本以适应某些基于SysV启动过程的商业程序的需要。另外,在许多设置服务的脚本中,也接受start、stop、restart这一类参数,例如rc.sendmail、rc.sshd等。
分享到:
评论

相关推荐

    slackware安装手册

    - **定义与特点**:Slackware是一款历史悠久的Linux发行版,以其简洁、稳定和遵循Unix哲学而著称。它强调简单性、可靠性和稳定性,是学习Linux内核和系统管理的理想选择。 - **目标用户群**:适合对Linux有一定了解...

    slackbook 3.0

    ### Slackbook 3.0:深入理解与使用Slackware Linux #### 一、引言 **Slackbook 3.0**是一本专为Slackware Linux用户编写的指南书籍,它通过全面且深入的方式介绍了如何安装、配置以及高效地使用Slackware操作系统...

    fvwm-crystal.tar.gz

    Slackbuild脚本是一种特殊的shell脚本,它按照Slackware Linux的特定规则帮助用户自动化编译和安装软件包的过程。 首先,让我们详细了解一下fvwm-crystal。FVWM(Fast Virtual Window Manager)是一个基于X Window ...

    Slackware Linux modular X.Org-开源

    X.Org是X Window System的主要实现,它提供了窗口管理、输入设备处理以及与显示硬件交互的能力。X.Org服务器是Linux和Unix系统中图形界面的基础,允许用户通过鼠标和键盘与系统交互,显示桌面环境、应用程序和其他...

    slcakware-HOWTO

    Slackware 的设计灵感来源于 UNIX 操作系统,它包含了一个完整的程序开发环境,支持 C、C++、Fortran-77、LISP 等语言,还提供了完整的 TCP/IP 网络支持,包括 NFS、PPP、CIFS/SMB (Samba) 等功能,以及一个完整的 X...

    eGTouch-v2.5.11703.L-x.tar.gz

    通过解压这个文件,用户可以获得eGTouch_v2.5.11703.L-x,这通常是一个包含驱动源代码、编译脚本和其他相关配置文件的目录结构。 该驱动支持多种Linux发行版,包括Ubuntu、Debian、SuSE(openSuSE)、Fedora Core、...

    linux livecd 制作工具

    在给定的标题和描述中提到,这种工具已经在Slackware 12.0上成功测试,表明它与该版本的Linux兼容。 **aufs(Advanced Union File System)** AUFS是Linux内核的一个文件系统,它支持Union Mount功能。在LiveCD制作...

    Linux性能監控

    创建一个启动脚本来确保Sysstat服务随系统启动而自动启动也是一个好主意。以下是一个简单的示例脚本: ```bash #!/bin/sh # Begin $rc_base/init.d/sysstat # Based on sysklogd script from LFS-3.1 and ...

    HardenedLinux:Hardened Linux(HL)发行版的脚本:Hardening脚本(HLHS)和软件包系统(cpfos)

    HardenedLinux:Hardened Linux(HL)发行版的脚本:Hardening脚本(HLHS)和软件包系统(cpfos)

    Linux 系统裁减指南 (LiPS).pdf

    - **Root File System**:包含操作系统所需的基本文件和目录的文件系统,它是文件系统的起点。 - **USB**:通用串行总线,一种广泛使用的接口标准,用于连接各种外部设备到计算机上。 **参考资料**: - IBM ...

    linux tutorial

    - **与其他操作系统的区别**: Linux通常作为服务器操作系统,具有高度的安全性、稳定性和灵活性。 ### 操作系统简述 - **操作系统定义**: 操作系统是管理和控制计算机硬件资源的软件。 - **操作系统历史**: 从多路...

    crontab使用方法crontab使用方法

    ##### 2.1 Cron安装与配置 Cron在大多数Linux发行版中都是默认安装的。但是,如果你需要手动安装或检查是否已安装,以下是一些常见Linux发行版的安装方法: ###### 2.1.1 Redhat/Fedora RPM系统的安装 在基于RPM...

    JD-CVS-开源

    JD-CVS 是一个开源工具,主要功能是自动化地从 CVS(Concurrent Versions System)版本控制系统中下载当前的代码快照。CVS 是一款广泛使用的源代码管理工具,它允许开发者对项目进行版本控制,方便团队协作和代码...

    Linux运维工程师模拟面试题卷一

    11. **rm命令可删除文件或目录,其主要差别就是是否使用递归开关(-R)或(-r)。** - **知识点:** `rm` 命令用于删除文件或目录,使用`-r` 或 `R` 参数可以递归删除目录及其所有子目录和文件。 12. **(mv)命令...

    Linux网络接口配置文件及相关工具[定义].pdf

    - Redhat/Fedora:配置文件如ifcfg-eth0存储在/etc/sysconfig/network-scripts/目录下,使用`system-config-network`或`netconfig`进行图形化配置。 - Slackware:主要通过修改/etc/rc.d/rc.inet1配置文件。 - SuSE/...

    Linux 2016文档汇总.docx

    根据提供的文档内容,我们可以归纳出一系列关于Linux以及与之相关的IT知识要点。下面将详细解释这些知识点,并确保信息准确、全面。 ### Linux基础知识 #### 介绍课程 在介绍课程部分,文档提到了不同级别的学习...

    SlackX-开源

    这是一个简单的Shell脚本,用于下载,编译和创建X Window System的Slackware软件包。 它旨在尽可能避免交互,并在每个X版本(开发和稳定)发布后进行更新,从而轻松测试和开发X。

    Linux面试题与答案

    ### Linux面试题与答案知识点详解 #### 1. Linux系统中的文件类型与设备 - **普通文件**:最常见的文件类型,包含数据。 - **目录文件**:存储其他文件或目录的容器。 - **链接文件**:指向另一个文件的指针。 - **...

    linux笔试题有答案

    - **答案**:这通常是通过`systemd`服务管理器实现的,可以在`/etc/systemd/system`目录下配置。 10. **需要安装___** - **知识点**:题干信息不完整,无法判断具体知识点。 - **答案**:此题需要更完整的信息...

Global site tag (gtag.js) - Google Analytics