位置: 编程技术 - 正文

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)

  • 佣金和手续费支出 纳税调整
  • 小规模纳税人税费会计分录
  • 盈余公积发放现金股利分录怎么写
  • 预缴所得税年底怎么结转
  • 报销是否需要发票
  • 不征税发票能报税吗
  • 房地产增值税怎么算抵扣土地款
  • 购进财务软件折旧怎么算
  • 饮料工业发展前景如何
  • 应付职工薪酬会产生暂时性差异吗
  • 物业公司收取电损费合法吗
  • 少付了几毛钱会计分录
  • 社会团体收费项目有哪些
  • 工程项目中的设备主要包括什么和什么
  • 变电站是否缴纳房产税
  • 个人开增值税普通发票税率
  • 商业营业用房经营租赁税率是多少
  • 电话宽带是什么意思
  • 一般纳税人如何纳税申报
  • 研发费用报表列报
  • 银行非保本理财420天有风险吗
  • 子公司资不抵债
  • 企业所得税地方分成比例
  • 注册资本与利息的税前扣除
  • 红蘑菇是什么松树伞吗
  • 抖音自动抢福袋挂机软件哪个好
  • 房地产企业哪些成本上升了
  • php做
  • framework4.0怎么打开
  • zen+框架
  • 资产负债表中其他综合收益怎么填
  • php中实现文件上传需要用到哪几个函数
  • php冒泡法排序
  • 回迁房会被收回吗
  • vue全家桶介绍
  • yolo系列算法全家桶
  • Apsara Clouder云计算技能认证
  • 生产车间领用工具
  • 增值税发票丢失罚款多少
  • mac m1 安装windows
  • 回购证券标的
  • 进项税和销项税月末怎么结转
  • Testing Applications with WebTest¶
  • springcloud分布式微服务组件
  • 收支平衡表怎么做工厂表格
  • 工资的内容包括很多项
  • 固定资产处置损益怎么算
  • 单位收风险金是什么意思
  • 一般纳税人购进免税农产品如何抵扣进项税额
  • 研发费用加计扣除是什么意思啊
  • 汇算清缴后补缴得企业所得税,计入哪年的税负
  • 购买汽车轮胎的注意事项
  • 房租进项发票怎么处理
  • 哪些费用计入管理费用开办费
  • 超过诉讼时效的法律后果
  • 医保账户收入金额是怎么算的
  • 残次品生产成本怎么算
  • 研发费用加计扣除的条件
  • 工程款可以转入存折里吗怎么转
  • 中国电子口岸企业法人卡
  • 投入产出比的计算依据
  • ubuntu怎么装
  • 微软win8下载
  • ubuntu的软件
  • 如何更改centos的语言
  • cocos输入框
  • typescript尖括号
  • vue中使用foreach
  • 原生js实现节日变化
  • [android] listView解析
  • jquery json对象
  • 利用python中的scikit-learn对疫情数据挖掘
  • android基础知识总结
  • python 性能
  • html中meta
  • js当前时间格式化
  • python的排序方法
  • 北京车辆过户办理
  • 全国残疾人工作先进个人
  • 国家个人所得税征收标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设