Slackware启动脚本与System V启动脚本的区别何在?

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

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

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挤进去)。

想暂时改变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都支持)。还有,你可以用注释的方式停止一个服务,然后去掉注释让它重新运行。

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

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

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

转载于:https://www.cnblogs.com/zhouhbing/p/5103541.html

SysV和BSD启动风格的比较相关推荐

  1. System V的启动风格和BSD的启动风格(2)---代码角度

    BSD 中没有运行级别的概念,一些文章上说的bsd运行级别是错误的.bsd的init进程通篇维持一个状态机,该状态机在不同状态间迁移,比如用户在 shell敲入init 3(实际上这种情况不会发生,b ...

  2. 计算机及Linux简介

    1.计算机的组成及其功能 计算机,人们生活.工作常用的一种工具,如电脑.手机以及各种智能穿戴设备等等.它通过接收外部的信息输入,进行相应的计算,实现信息的存储.显示.计算机由硬件和软件组成(就像人的身 ...

  3. linux,unix,bsd命令收集

    这是一份收集Unix/Linux/BSD命令和任务的文档,它有助于高级用户或IT工作.它是一份简明扼要的实用指南,当然读者应该知道他/她在干什么. Unix Toolbox 版本:12 你可以到 ht ...

  4. 适配splashscreen步骤以及启动卡住不动(白屏)的坑

    Android 12 启动画面 从 Android 12 开始,在所有应用的冷启动和温启动期间,系统一律会应用 Android 系统的默认启动画面.默认情况下,此系统默认启动画面由应用的启动器图标元素 ...

  5. 广成子:值得收藏-史上最全Linux ps命令详解

    From 闻茂泉(广成)AliDataOps 一.程序员的疑惑   大概在十多年前,我当时还是一个产品经理.由于一些工作的原因,需要向运维工程师学习一些linux常用命令.当使用linux ps这个十 ...

  6. 【Linux】ps -ef 和ps aux 有什么不同呢?

    ps -ef 和ps aux 有什么不同呢? 有没有从事运维多年,却不知道ps -ef 和ps aux 这俩不同选项的区别呢? 今天来讲讲他们的不同 先看看他们显示的内容 $ ps -ef | hea ...

  7. systemd、upstart和system V

    http://blog.csdn.net/kumu_linux/article/details/7653802  systemd是Linux下的一种init软件,由Lennart Poettering ...

  8. linux相关的东东,来自dbanotes

    原贴:http://www.dbanotes.net/MT/mt-search.cgi Search this site Matching entries matching "linux&q ...

  9. centos7中ps显示的内容_值得收藏,史上最全Linux ps命令详解

    原标题:值得收藏,史上最全Linux ps命令详解 一.程序员的疑惑 大概在十多年前,我当时还是一个产品经理.由于一些工作的原因,需要向运维工程师学习一些linux常用命令. 当使用linux ps这 ...

最新文章

  1. 解决虚拟机安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题(一般出现在win7 旗舰版)
  2. 【自动驾驶】3. DDS 数据分发服务(Data Distribution Service)
  3. java怎么实现人物的行走,js键盘事件实现人物的行走
  4. 对于ssh和hadoop联系讲解和ssh的基本内容
  5. 生物科学数据分析和数据管理本体论
  6. NLP免费直播 | 两周详解BERT、知识图谱、对话生成、图卷积神经网络
  7. centos linux7 系统安装
  8. Python爬虫实践: 获取百度贴吧内容
  9. 苹果电脑投屏到电视_最全小米电视投屏官方教程公布:手机、PC、APP通吃
  10. Java 并发编程之 FutureTask
  11. 页面之间传递参数得几种方法
  12. java多线程总结一:线程的两种创建方式及比较
  13. Axure 8.1.0.3388授权码
  14. vue 做的酷狗音乐网页版 ,酷狗音乐网页版,ui界面模仿原生酷狗音乐
  15. 【机器学习理论】换底公式--以e,2,10为底的对数关系转化
  16. ios开发者联系方式
  17. 高精度计算Π的值(C语言)
  18. php 连接sqlserver数据库(一)
  19. zcmu-1133: 第九章:致我们终将逝去的青春(dfs)
  20. Bootstrap typeahead使用问题记录及解决方案

热门文章

  1. python如何把二进制转文本_在python3中如何把文本转换为二进制
  2. python函数参数列表_python函数列表
  3. android里面的广播,Android里面的各种广播
  4. php获取ajax data,HTML 获取 PHP 接口数据(ajax)
  5. java在文本域内添加按钮_JAVA中在窗体中添加了一个文本框,然后再文本框中输入字符,如何...
  6. pbl和sbl_PBL与SBL联合教学模式在妇产科教学中的应用研究
  7. 值不值得入手_北龙湖—值不值得入手?
  8. java多线程实例_要把Java吃透您得先吃透这些基本概念
  9. Android的触摸监听器实现滑动图片
  10. wamp无法访问php,wamp无法访问phpmyadmin怎么办