当前位置:首页 > 技术分析 > 正文内容

linux init进程

ruisui884周前 (05-23)技术分析20

一. init是Linux系统操作中不可缺少的程序之一。

所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。

所以,init始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。

如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。

二. init一共分为7个级别,这7个级别的所代表的含义如下

  • 0:停机或者关机(千万不能将initdefault设置为0)
  • 1:单用户模式,只root用户进行维护
  • 2:多用户模式,不能使用NFS(Net File System)
  • 3:完全多用户模式(标准的运行级别)
  • 4:安全模式
  • 5:图形化(即图形界面)
  • 6:重启(千万不要把initdefault设置为6)

其实,可以通过查看/etc/rc.d/中的rc*.d的文件来对比理解。

init 0,对应的系统会运行,/etc/rc.d/rc0.d里指定的程序。我们来看下名称

[root@localhost  ~]# ls /etc/rc.d/rc0.d 
K01dnsmasq    K15ksmtuned  K35nmb         K60crond       K74lm_sensors  K83portreserve     K85rpcgssd    K88iscsi     K90network       S00killall
K10cups       K16ksm       K35smb         K66gpsd        K75netfs       K84NetworkManager  K85rpcidmapd  K88rsyslog   K92ip6tables     S01halt
K10saslauthd  K20nfs       K36mysqld      K69rpcsvcgssd  K75udev-post   K84wpa_supplicant  K86nfslock    K89iscsid    K92iptables
K10xfs        K25sshd      K50haldaemon   K70vboxdrv     K76openvpn     K85mdmonitor       K87alsasound  K89netplugd  K98qemu
K15gpm        K30sendmail  K50netconsole  K74acpid       K83bluetooth   K85messagebus      K87rpcbind    K89rdisc     K99lvm2-monitor

开机会执行的两个进程是killall和halt,这两个都表示为终止进程。

故init 0是用于表示关机的。

init 1,对应的系统会运行,/etc/rc.d/rc1.d里指定的程序。

[root@localhost ~] # ls /etc/rc.d/rc1.d
K01dnsmasq    K15ksmtuned  K35nmb         K60crond       K74lm_sensors   K84NetworkManager  K85rpcidmapd  K88rsyslog   K92ip6tables     S99single
K10cups       K16ksm       K35smb         K66gpsd        K75netfs        K84wpa_supplicant  K86nfslock    K89iscsid    K92iptables
K10saslauthd  K20nfs       K36mysqld      K69rpcsvcgssd  K76openvpn      K85mdmonitor       K87alsasound  K89netplugd  K98qemu
K10xfs        K25sshd      K50haldaemon   K70vboxdrv     K83bluetooth    K85messagebus      K87rpcbind    K89rdisc     S02lvm2-monitor
K15gpm        K30sendmail  K50netconsole  K74acpid       K83portreserve  K85rpcgssd         K88iscsi      K90network   S26udev-post

这个级别启动的服务有三个,udev、lvm相关的和single(单用户模式的服务)。故此级别是单用户模式,只有root能用,不支持其他用户。

init 2,对应的系统会运行,/etc/rc.d/rc2.d里指定的程序。

[root@localhost ~ ]# ls /etc/rc.d/rc2.d/
K01dnsmasq    K20nfs       K36mysqld      K74lm_sensors      K85rpcgssd    K89netplugd      S08iptables    S23NetworkManager  S30vboxdrv    S99local
K10saslauthd  K25sshd      K50haldaemon   K75netfs           K85rpcidmapd  K89rdisc         S12rsyslog     S24portreserve     S35qemu
K10xfs        K30sendmail  K50netconsole  K76openvpn         K86nfslock    K90network       S13rpcbind     S25cups            S85gpm
K15ksmtuned   K35nmb       K66gpsd        K83bluetooth       K88iscsi      S02lvm2-monitor  S15mdmonitor   S26acpid           S90crond
K16ksm        K35smb       K69rpcsvcgssd  K84wpa_supplicant  K89iscsid     S08ip6tables     S22messagebus  S26udev-post       S99alsasound

这个级别启动的服务多了,
NetworkManager/iptables/acpid/alsa都已经开启,但是nfs,smb,openvpn相关服务没有开启,这个级别不支持nfs。

init 3, 对应的系统运行/etc/rc.d/rc3.d

[root@localhost ~] # ls /etc/rc.d/rc3.d/
K01dnsmasq    K30sendmail    K74lm_sensors      K89rdisc         S08iptables  S18rpcidmapd       S25cups       S35qemu       S85ksmtuned   S99local
K10saslauthd  K36mysqld      K76openvpn         K90network       S12rsyslog   S19rpcgssd         S25netfs      S50bluetooth  S90crond
K10xfs        K50netconsole  K84wpa_supplicant  K99lvm2-monitor  S13iscsi     S22messagebus      S26acpid      S50haldaemon  S91nmb
K20nfs        K66gpsd        K85mdmonitor       S07iscsid        S13rpcbind   S23NetworkManager  S26udev-post  S84ksm        S91smb
K25sshd       K69rpcsvcgssd  K89netplugd        S08ip6tables     S14nfslock   S24portreserve     S30vboxdrv    S85gpm        S99alsasound

这个级别nfs服务是开启的,被成为完全多用户模式。

init 4

[root@localhost ~ ]# ls /etc/rc.d/rc4.d/
K01dnsmasq    K30sendmail    K66gpsd            K85mdmonitor     S07iscsid     S13rpcbind     S23NetworkManager  S26udev-post  S84ksm        S99local
K10saslauthd  K35nmb         K69rpcsvcgssd      K89netplugd      S08ip6tables  S14nfslock     S24portreserve     S30vboxdrv    S85gpm
K10xfs        K35smb         K74lm_sensors      K89rdisc         S08iptables   S18rpcidmapd   S25cups            S35qemu       S85ksmtuned
K20nfs        K36mysqld      K76openvpn         K90network       S12rsyslog    S19rpcgssd     S25netfs           S50bluetooth  S90crond
K25sshd       K50netconsole  K84wpa_supplicant  K99lvm2-monitor  S13iscsi      S22messagebus  S26acpid           S50haldaemon  S99alsasound

此模式被称为安全模式。

init 5

[root@localhost ~ ]# ls /etc/rc.d/rc5.d/
K01dnsmasq    K25sshd        K66gpsd         K84wpa_supplicant  K87rpcbind   K90network       S22messagebus      S26udev-post  S84ksm        S99local
K10saslauthd  K30sendmail    K69rpcsvcgssd   K85mdmonitor       K88iscsi     K99lvm2-monitor  S23NetworkManager  S30vboxdrv    S85ksmtuned
K10xfs        K36mysqld      K74lm_sensors   K85rpcgssd         K89iscsid    S08ip6tables     S25cups            S35qemu       S91nmb
K15gpm        K50netconsole  K76openvpn      K85rpcidmapd       K89netplugd  S08iptables      S25netfs           S50bluetooth  S91smb
K20nfs        K60crond       K83portreserve  K86nfslock         K89rdisc     S12rsyslog       S26acpid           S50haldaemon  S99alsasound

完全的图形化界面模式

init 6

[root@localhost ~ ]# ls /etc/rc.d/rc6.d/
K01dnsmasq    K15ksmtuned  K35nmb         K60crond       K74lm_sensors  K83portreserve     K85rpcgssd    K88iscsi     K90network       S00killall
K10cups       K16ksm       K35smb         K66gpsd        K75netfs       K84NetworkManager  K85rpcidmapd  K88rsyslog   K92ip6tables     S01reboot
K10saslauthd  K20nfs       K36mysqld      K69rpcsvcgssd  K75udev-post   K84wpa_supplicant  K86nfslock    K89iscsid    K92iptables
K10xfs        K25sshd      K50haldaemon   K70vboxdrv     K76openvpn     K85mdmonitor       K87alsasound  K89netplugd  K98qemu
K15gpm        K30sendmail  K50netconsole  K74acpid       K83bluetooth   K85messagebus      K87rpcbind    K89rdisc     K99lvm2-monitor

这个级别里,只有两个服务,一个为killall,一个是reboot,即,关闭现在的系统,重启。故此级别是重启。

不同的系统版本,可能里面的文件会不同,如果要查看,可以通过ll来看,其实他们都是软连接。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4278.html

标签: bindmessage
分享给朋友:

“linux init进程” 的相关文章

继Yuzu后,任天堂要求移除多个Switch模拟器项目

IT之家 7 月 11 日消息,任天堂美国分公司 (Nintendo of America) 已要求移除多个用于模拟 Nintendo Switch 游戏的开源模拟器项目,其中包括 Suyu、Nzu、Uzuy、Torzu、Sudachi 和 Yuzu-vanced 等。这些模拟器均被指控包含绕过任天...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

使用cgroup限制进程资源

这里使用containerd项目中的cgroup包来实现进程资源限制。先写一个耗费一个CPU并且一秒增加10m内存的测试进程package mainimport ( "fmt" "math/rand" "time")func main() { go f...

10款超牛Vim插件,爱不释手了

我是一个忠实的Vim编辑器用户,从事开发工作多年,我一直都非常喜欢使用Vim。轻量、便捷,而且,熟悉了Vim相关的快捷键之后,效率能够成倍的提升。除了这些之外,Vim像很多知名的IDE、编辑器一样,也支持插件配置,通过这些插件,可以实现更多高级、高效的操作。今天,就来给大家分享10个我特别喜欢的Vi...

虚幻引擎5.5发布

IT之家 11 月 13 日消息,虚幻引擎 5.5 现已发布。据介绍,新版本虚幻引擎在动画创作、虚拟制作和移动游戏开发方面取得进步;渲染、摄像机内视觉特效和开发人员迭代等领域的部分功能已可用于生产。IT之家整理部分功能亮点如下:动画Sequencer增强虚幻引擎的非线性动画编辑器 Sequencer...

《暗黑破坏神 2:重制版》PC 版 2.3 版本发布,支持英伟达 DLSS

IT之家 12 月 3 日消息,暴雪为《暗黑破坏神 2:重制版》PC 版发布了更新 2.3 版本,添加了“离线难度缩放”滑块(玩家可以在单人游戏时增加挑战和奖励的级别)、多项辅助功能和用户界面改进,以及英伟达 DLSS 支持。玩法改进:玩家现在可以在离线游戏的选项菜单中使用“游戏难度等级”,它提供与...