位置: 编程技术 - 正文

Slackware Linux init 进程

编辑:rootadmin
Joe Brockmeier 研究了 Slackware Linux init 进程。他讨论了系统如何初始化服务、各种运行级别是什么,以及如何从缺省安装中添加或除去服务来定制系统。Linux 用户正日益成熟,这意味着他们想要将系统配置成执行他们希望完成的任务。但目前 Linux 发行版通常都附带了自动配置的设备和启动服务,如 Sendmail 或 Apache。这些发行版没有考虑到的是毫不更改其缺省设置来运行服务,如 Apache -- 用户毫不知情 -- 会让黑客和利用脚本捣乱的人趁虚而入。而且这会用完本可以更好利用的系统资源 -- 比如可以用于 Quake 或您喜欢的编译器的更多处理器时间。由于缺少控制是件“糟糕的事”,因此让我们看一下 Linux 系统引导时在 init 进程期间,在所涉及的各个运行级别上都发生了什么,以及如何在系统运行时定制系统或在运行级别之间切换。 我们的示例使用 x 平台上的 Slackware Linux 发行版(请参阅本文后面的 参考资料 )。大多数信息可用于其它 Linux 发行版,但在细节处会略有不同。尤其是,与其说 Slackware 的 init 结构类似于 System V 结构,还不如说它更类似于 BSD UNIX 结构,尽管 Slackware 的最新发行版中的程序做了一些让步,它们要将服务添加到启动,但期望这些服务是 System V 目录结构。(请参阅侧栏, “BSD 和系统 V init 脚本之间的差异”。) 所有进程的父代当 Linux 机器引导时,究竟会发生什么?在计算机的 BIOS 完成其任务后,系统会读取硬盘(或软盘,或 CD-ROM,或 Zip 驱动器……Linux 是非常灵活的)的第一位,并会遇到引导装入程序。虽然 GRUB 和其它装入程序也逐渐变得流行,但通常这就是 Linux 装入程序 (LInux LOader),一般称作 LILO。然后 LILO 将 Linux 内核装入内存,并开始展示它的魔力。Linux 内核初始化了诸如 SCSI 卡之类的设备,以及其它内核中内置的硬件设备。然后内核运行 init,它是除内核之外在系统运行的第一个进程。如果执行 ps ax | grep 1 ,就会看到 init 的进程 ID (PID) 是 1。 装入 init 之后,它会读取 inittab 以查看下一步做什么。 inittab 告诉 init 要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件。 回页首 运行级别运行级别是由系统上的所有服务在某个给定时间定义的(基本上是操作方式)。Linux 可以有几种操作方式:单用户方式、单用户联网方式、多用户方式、始于 X 窗口的多用户方式,等等。这部分将要说明运行级别的概念、Slackware 上有哪些运行级别,已经它们被叫作什么。运行级别由数字或字母标明。可惜,不是所有的 Linux 发行版在各个运行级别的称呼问题上都能达成共识。在某些发行版中,运行级别 3 是使用 X 窗口登录的多用户方式。而其它的,如 Slackware,将运行级别 3 指定成使用控制台登录的多用户方式。据我所知,所有 Linux 发行版都认同运行级别 0 是“停机”、运行级别 1 或 "S" 是单用户方式(稍后将详细说明),运行级别 6 是重新引导系统。Slackware 的运行级别如下: 运行级别 0 = 系统停机 运行级别 1 = 单用户方式,主要用于维护 运行级别 2 = 从不使用 运行级别 3 = 使用控制台登录的多用户方式 运行级别 4 = 使用 X 会话管理器的多用户方式 (XDM, GDM, KDM) 运行级别 5 = 从不使用 运行级别 6 = 重新引导 运行级别 S 或 s = 单用户方式 这里没有记录运行级别 7 到 9,在理论上,它们适用于在需要时定制运行级别。但我还没有亲自尝试过创建一个。 BSD 和 System V init 脚本之间的差异Slackware Linux 使用 BSD init 脚本说说挺容易,但这究竟表示什么?仿真 BSD init 样式的 Linux 和 UNIX 系统有一个 /etc/rc.d/ 目录,其中每个运行级别都包含一个 init 脚本。因此,如果要查看或修改运行级别 4 的 init 脚本,应该编辑文件 /etc/rc.d/rc.4 。 另一方面,其 init 脚本基于 System V 的系统对于每个运行级别都有独立的目录。因此,如果要编辑运行级别 4 init 脚本,应查找 /etc/rc4.d/ 目录,并查找该目录中对应于要修改的服务的脚本。 这个差异导致了 Berkeley Software Distribution (BSD) UNIX 和 AT&T System V UNIX 之间的设计差异,这两者都开创了各自的 UNIX 商业版本。它们连同 Vi 以及 Emacs 一起是计算机界的激烈争论之一。由于许多 Linux 发行版都喜欢 System V init 布局,Slackware 现在也附带了目录和 rc.sysvinit init 脚本,用于保持兼容性。 回页首 运行级别配置如果您使用的不是 Slackware Linux,那么配置文件的结构与我谈到的结构会大不相同。除了 inittab 文件,所有 Slackware 的启动配置文件都在 /etc/rc.d/ 目录中。 缺省情况下,目录中有 5 个运行级别 rc.* 脚本,如果将 symlink 从 rc.0 加到 rc.6 ,那么可有 6 个。 运行级别 init 脚本是:rc.0 = rc.0 文件是到 rc.6 的 symlink rc.M = 多用户运行级别 2、3 和 5 的 init 脚本 rc.K = “管理”运行级别,单用户方式 rc.S = 系统初始化脚本 rc.4 = 运行级别 4(自动引导入所选择的 X 会话管理器)的 init 脚本 rc.6 = 重新引导或停止系统时由 init 执行的脚本 目录中的其余 rc.* 文件用于启动诸如联网、内核模块、PCMCIA、Samba、Apache、Netatalk 和 GPM 的系统服务。如果想要使某个服务(如 Apache)完全不能在任何运行级别上使用,请使用 chmod 将文件的许可权从可执行更改成不可执行。除去该文件也可以到达相同效果,但我不推荐这种做法。也许在以后某个日子您会发现要重新启用服务,但却不知道怎样做。 rc.inet1 脚本负责启动基本联网服务,如设置主机名(IP 和 DHCP)。 rc.inet2 脚本负责启动所有其它 INET 服务,如 NFS、包转发、ssh 服务器和其它联网守护程序。 所有 Slackware /etc/rc.d/rc.* 文件都是 Bash shell 脚本,都可以进行手工编辑。可是对于联网,您可能应该先尝试 netconfig 实用程序。虽然需要手工编辑 /etc/resolv.conf 来添加多个名称服务器,但是它也许能处理您想要执行的所有操作,而且它非常易于使用。 如果您是 Linux 初学者并且要修改系统,那么也许应该确保您有引导软盘,并且应该复制您所有想要编辑的 rc.* 文件。如果拿不定主意,我通常会将文件保存为 rc.*.old ,使它们变成不可执行文件。,使它们变成不可执行文件。 回页首 使用运行的系统好,现在系统已经运行,然而您需要在单用户方式中执行一些操作 -- 该怎么做呢?本文的下一部分将说明如何在系统运行时更改运行级别,而不是通过重新引导来更改运行级别,而且还说明了为什么执行此操作以及何时执行。 回页首 telinit 命令:在运行的系统上更改运行级别telinit 命令可以用于更改运行级别。当以 root 身份执行 telinit S (或者想要更改的任意运行级别)时,它会更改运行级别,关闭前一个运行级别,然后启动下一个。 某种程度上您正在重新引导系统的一部分。然而,关闭与重新启动服务的能力正是 Linux 最可爱的品质之一。想要更改机器的 IP 地址吗?没问题,只要进行一些更改,然后重新启动联网服务就行了。只要一切配置正确,备份和运行是如此迅速,很难分辩是否做过更改。在其它即使更改了桌面上的墙纸都必须重新引导的操作系统上,尝试一下执行此操作 :)确实需要重新引导或彻底关闭 Linux 机器的唯一情况是如果正在添加或更改硬件,假设您正在使用不能热插拔的设备,或者已经中断且需要使机器脱机以修复损坏。与其它操作系统不同,对于那些不经过重新引导就无法解决问题的产品系统,我从来没有看到过重新引导解决了这些系统上的问题。我曾设法利用诸如 hdparm 的命令来挂起非生产性机器,我希望这种情况发生。 假设您想要执行一些系统维护,而这些系统维护要求系统处于单用户方式。例如,使用 hdparm 调整硬盘。第一步是 su (切换)到 root 用户。 然后执行 telinit 命令使系统进入单用户方式: telinit S -t 自变量 "-t" 是可选的;它告诉 telinit 在真正切换到单用户方式之前等待 秒。然而,只要执行了该命令,登录到机器的任何人都会看到在控制台上出现一个警告,指出系统将切换运行级别或将在 秒内停机。到了 秒时,init 会关闭单用户方式中不使用的进程,并使系统进入单用户方式。然后,将提示您输入 root 用户密码以执行系统维护。系统进入单用户方式所使用的进程略有不同。缺省情况下,单用户方式要求 init 在控制台上调用 sulogin 命令,并要求在单用户方式中使用 root 登录。 系统进入单用户方式后,应该会看到如下的消息: Give root password for system maintenance (or type Control-D for normal startup):执行了维护之后,可以执行以下命令来使系统回到以前的运行级别:telinit 3 此命令告诉系统重新进入多用户运行级别。在此命令中可以用 "2" 或 "4" 来代替 "3"。在 Slackware 系统上,运行级别 4 将使您进入使用 X 窗口显示管理器之一的多用户方式,因此您将直接登录到 X 窗口。如果在拥有串行电缆的串行上挂了 UPS,那么就可以让 UPS 在断电的情况下向系统发送一个信号。如果您的产品级系统有一个很大的文件系统,那么这是非常有用的。我曾看到过当没有彻底卸载 GB RAID ext2 文件系统时(完成 fsck 需要大约 4 小时)发生了什么情况。另一方面,正确配置的 UPS 可以提醒系统断电情况,并向 telinit/init 发送 SIGPWR 信号,这会使 init 根据其配置情况将系统切换到单用户方式或者完全关闭系统。 回页首 关机好,由于一直使用计算机,您已经觉得疲倦了,并打算到 Big Blue Room 去放松一下。幸好,您已经知道了在结束时直接按电源开关是一大禁忌,但也许还不知道关闭系统的所有方法。在 Linux 中,可以使用“三指礼”重新引导系统:Ctrl+Alt+Del 键控顺序会向系统发送消息,通知它执行关机进程并重新启动。换句话说,除非告诉它不要那样做。如果要禁用该键控顺序,需要注释掉 inittab 中的一行代码:部分 Slackware inittab# Script to run when going multi user.rc::wait:/etc/rc.d/rc.M# What to do at the "Three Finger Salute". #ca::ctrlaltdel:/sbin/shutdown -t5 -rf now Comment out the above line to disable Ctrl+Alt+Del hotkey.关机时会发生什么情况?调用 shutdown 命令可以逐步关闭系统。然而,shutdown 自身并不完成所有工作,它通知 init:应该进入运行级别 0、1 或 6。shutdown 命令还通知所有已登录到机器上的用户:机器将关闭。在此之后将锁住 login 命令,因此没有别的人可以再启动会话。要使用 shutdown 命令来关闭 Linux 系统,使用以下命令:关机shutdown -h now如果要给用户注销和保存文件的时间,请使用以下命令:shutdown -h -t shutdown 命令的 "-h" 开关告诉系统在停机后彻底关机。如果在内核中启用了 APM,那么它会替您关闭电源,否则此时可以放心地按下开关。"-t" 开关是到系统开始关机之前所需要的时间,以秒为单位。如果要放弃关机,那么使用此开关可以实现。要停止暂挂关机,输入:shutdown -c此命令将取消以前的所有 shutdown 命令。如果出于某些原因,您不想关闭系统,但却要向用户发送“系统即将关闭”的警告,那么应在 shutdown 中使用 "-k" 自变量。知道如何使用 telinit 和 init 可以在修改 Linux 系统派上用处。本文中,我们讨论了更改运行级别和有关 Slackware Linux 发行版的 init 脚本的基础知识。在各个发行版之间,目录结构和文件位置都各不相同,但在阅读了本文之后,您应该能够掌握系统的 init 脚本,即使您使用的不是 Slackware Linux。 参考资料 您可以参阅本文在 developerWorks 全球站点上的 英文原文. 请访问 Slackware Linux 主页。 请订阅 安装、配置和定制 Slackware Linux ,这是由 Joe Brockmeier 与其他人合著的 Slackware 初学者指南。 如需附加背景知识,请阅读 "How Your Computer Boots"。 请深入了解 Berkeley Software Distribution (BSD) UNIX 和 AT&T System V UNIX 以及 Vi 和 Emacs 之间的设计差异,这是计算机界的 激烈争论之一。

推荐整理分享Slackware Linux init 进程,希望有所帮助,仅作参考,欢迎阅读内容。

Slackware Linux init 进程

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

linux下一个网卡配置多个IP linux下一个网卡如何配置多个IP?linux下边如果没有图形界面了配置网络还真的不是太方便了,呵呵,习惯问题,当然习惯需要改的,最近遇到一个问题需

linux下如何查看邮件 我使用的是REDHAT9.0,当我登陆后,系统提示:YOUHAVEMAIL。请问我改用什么命令查看邮件信息mail命令即可

linux系统中如何查看日志 如何查看日志内部总是发现有病毒和恶意的攻击,我想请问如何查看日志如何查看日志[quote][i]原帖由yanggang]内部总是发现有病毒和恶意的攻击,我想

标签: Slackware Linux init 进程

本文链接地址:https://www.jiuchutong.com/biancheng/366259.html 转载请保留说明!

上一篇:Linux系统中如何查看运行级别(linux小技巧)

下一篇:linux下一个网卡配置多个IP(linux怎么把网卡down)

  • 山东省增值税发票勾选认证平台
  • 在报税显示缺少发票信息
  • 小规模纳税人未开票收入如何填申报表
  • 以设备投资入股要交增值税
  • 税金及附加主要分析
  • 一次性用品可以做什么
  • 发票金额太大怎么拆分数量,单价不变还是数量不变
  • 外地预缴的增值税要在本地计算附加税吗?
  • 信用评估费用收费标准
  • 合作社免税收入需要成本吗?
  • 建筑劳务属于什么税收分类
  • 资产收购应如何计算
  • 航空货运单可以由谁来填写
  • 企业如何申请科研项目
  • 电子承兑汇票能转让给个人吗
  • 房地产企业土地增值税
  • 增值税发票已作废怎么办
  • 应税行为扣除额怎么填
  • 营改增后营业外收入交增值税吗?
  • 房地产企业预缴增值税及附加税
  • 购置土地税款怎么入账?
  • 来料加工原材料计入什么科目
  • 高新技术研发人员比例
  • 企业之间资金拆借利息是否可以税前扣除
  • 失控票要在抵扣当月转出吗
  • 完工转出产成品成本计算
  • 外贸公司付款方式有几种
  • 企业支付银行的贷款利息可以税前扣除吗为什么
  • 'The Wave' sandstone formation in Coyote Buttes North, Paria Canyon-Vermilion Cliffs National Monument, Arizona (© Dennis Frates/Alamy)
  • 房地产开发间接费
  • 废旧物资经营单位增值税税率
  • 民办非盈利组织税收政策
  • 公司破产清算应先还银行还是股东
  • .gp4
  • ts类型声明 要为某个文件里的变量声明吗
  • 货真价实的话
  • php隐藏图片地址
  • python安装后找不到了
  • 应付票据贴现是负债吗
  • 企业境外收入境内申报
  • 专家咨询费比例不能超过多少
  • 企业扣税方式
  • 帝国cms功能
  • ibm_db_dbi
  • 非财政补助结余分配属于什么科目
  • 自用房地产转换为成本模式计量的投资性房地产
  • 月底主营业务成本会计分录
  • 市政建设配套费 契税
  • 去年多计提工资今年怎么进行损益调整
  • 现金短缺无法查明计入什么科目
  • 房屋租赁违约金怎么规定
  • 本期已认证且不抵扣怎么申报
  • 公司借调人员工资账务处理
  • 销售产品收到现款120元是什么制
  • 建筑业异地预缴税款最新规定
  • 企业购买固定资产要交什么税
  • 营业外支出为负数原因
  • 没有发票的费用可以税前扣除吗
  • 电焊工劳保用品有哪些
  • 公司买车贷款要看法人征信吗
  • 年初未分配利润在利润表怎么填
  • mysql大小
  • centos7如何安装yum命令
  • ffplay播放视频命令
  • piped.exe
  • win98拨号上网
  • 怎么用macbook
  • win7无线无法连接怎么办
  • movie是什么文件
  • win7 word
  • JavaScript数组添加元素
  • python black
  • python中怎么取整数的某位数
  • De facto standard 世界上不可思议的事实标准
  • java项目怎么变成web项目
  • jQuery插件封装时如要实现链式编程,需要
  • 河北国家税务局发票查询系统
  • 国家税务总局官网电子税务局
  • 江苏税务社保缴纳查询缴费记录
  • 税务稽查审理的基本原则
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设