init命令详解
12345678910111213
比如输入: init 0 就是关机
init 3 就是切换到多用户-命令行模式
init 5 就是切换到图形化界面
init 6 就是重启
当我们已界面模式退出后,再次开机进入时,还是界面模式,我们想不管我们以什么模式退出,在每次开机进入时默认是命令行模式,该如何设置呢?
方法如下:在CentOS系统下有个跟文件目录:/etc/inittab
2. # the system in a certain run-level.
3. #
4. # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
5. # Modified for RHS Linux by Marc Ewing and Donnie Barnes
6. #
7. # Default runlevel. The runlevels used by RHS are:
8. # 0 - halt (Do NOT set initdefault to this)
9. # 1 - Single user mode
10. # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
11. # 3 - Full multiuser mode
12. # 4 - unused
13. # 5 - X11
14. # 6 - reboot (Do NOT set initdefault to this)
15. #
16. id:3:initdefault: 12345678910111213141516
---------------------
作者:苦的人生遇见甜
来源:CSDN
原文:https://blog.csdn.net/wd2011063437/article/details/78959365
版权声明:本文为博主原创文章,转载请附上博文链接!
1.init初探
init是Linux系统操作中不可缺少的程序之一。init进程,它是一个由内核启动的用户级进程,然后由它来启动后面的任务,包括多用户环境,网络等。
内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
根据实际看一下,我们来到/boot下,
可以看见,Grub就在这里,vmlinuz-2.6.32-358.el6.i686这个文件很重要,说通俗一点的话应该是我们的内核,在启动后加载所有驱动(这个有另外的章节再讲,这里不详述)。另外initramfs-2.6.32-358.el6.i686.img是启动init进程的一个镜像文件,包含一个最小的linux系统。
Linux内核在初始化之后会执行init进程,而init进程会挂载我们的根文件系统,但由于init程序也是在根文件系统上的,所以这就有了悖论。Linux采用两步走的方法来解决这个问题。Linux2.6版以前的方法是:除了内核vmlinuz之外还有一个独立的initrd.img映像文件,其实它就是一个文件系统映像,linux内核在初始化后会mount initrd.img作为一个临时的根文件系统,而init进程就是在initrd.img里的,然后init进程会挂载真正的根文件系统,然后umount initrd.img。但Linux2.6内核的实现方式却不太一样,虽然完成的功能是一样的。Linux2.6采用initramfs。initramfs:init ram filesystem,它是一个cpio格式的内存文件系统,其实这部分也有很多内容可以讲,我们以后再谈。
通常的步骤是先启动内核,然后内核挂载initrd.img,并执行里面的脚本来进一步挂载各种各样的模块,然后发现真正的root分区,挂载并执行/sbin/init。
如果没有这个文件,计算机的启动时第一个进程都启动不起来。有他存在1号进程才可以开启。相当于是一个指挥官,他要指挥哪些程序在启动时应当存在,哪些程序不应当存在。/etc/inittab文件是init在启动时读取的文件,也就是指挥官的决策书,这个决策书规定了当前战争的局势,比如和平局势、冷战局势、战争局势。以及该局势下的核心策略。init就是这样,通过inittab这个文件控制了计算机的启动级别,及该级别下启动的进程。

[root@hao boot]# cat /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

从这里可以看出,我这里linux的default启动级别是runevel 5(注意,此处不要擅自改为6,如果默认的runlevel是6,那么就会比较麻烦,为什么会这么说,看完下面每个级别具体对应的进程就会明白)。那么具体每个级别都是什么呢?其实每个级别都有若干个进程,只不过每个级别开的进程不同。
0:几乎所有进程都关闭,停机状态
1:单用户模式,root账户进行操作
2:多用户,不能使用net file system,一般很少用
3:完全多用户,一部分启动,一部分不启动,命令行界面
4:未使用、未定义的保留模式
5:图形化,3级别中启动的进程都启动,并且会启动一部分图形界面进程。
6:停止所有进程,卸载文件系统,重新启动
这些级别中1、2、4很少用,相对而言0、3、5、6用的会较多。3级别和5级别除了桌面相关的进程外没有什么区别。为了减少资源占用,推荐都用3级别。
那么这些级别是如何定义的呢,在/etc/rc.d/目录内,有如下目录。

[root@Hao rc.d]# ll
total 60
drwxr-xr-x. 2 root root 4096 Mar 11 13:44 init.d
-rwxr-xr-x. 1 root root 2617 Feb 22 2013 rc
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc0.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc1.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc2.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc3.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc4.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc5.d
drwxr-xr-x. 2 root root 4096 Apr 3 08:36 rc6.d
-rwxr-xr-x. 1 root root 220 Feb 22 2013 rc.local
-rwxr-xr-x. 1 root root 19472 Feb 22 2013 rc.sysinit

在诸如rc3.d和rc5.d目录下有runlevel 3 和runlevel 5中允许和不允许启动的进程,
再进去目录看一下。

[root@Hao rc.d]# ls rc3.d/
K01smartd K69rpcsvcgssd S10network S26acpid
K02oddjobd K73winbind S11auditd S26haldaemon
K05wdaemon K75ntpdate S11portreserve S26udev-post
K10psacct K75quota_nld S12rsyslog S28autofs
K10saslauthd K76ypbind S13cpuspeed S50bluetooth
K15htcacheclean K80kdump S13irqbalance S58ntpd
K15httpd K84wpa_supplicant S13rpcbind S80postfix
K15svnserve K87restorecond S15mdmonitor S82abrt-ccpp
K25sshd K88sssd S22messagebus S82abrtd
K30spice-vdagentd K89rdisc S23NetworkManager S90crond
K36mysqld K95firstboot S24nfslock S95atd
K50dnsmasq K99rngd S24rpcgssd S99certmonger
K50netconsole S01sysstat S24rpcidmapd S99local
K50snmpd S02lvm2-monitor S25blk-availability
K50snmptrapd S08ip6tables S25cups
K60nfs S08iptables S25netfs


root@Hao rc.d]# ls rc5.d/
K01smartd K75ntpdate S11portreserve S26udev-post
K02oddjobd K75quota_nld S12rsyslog S28autofs
K05wdaemon K76ypbind S13cpuspeed S50bluetooth
K10psacct K80kdump S13irqbalance S55sshd
K10saslauthd K84wpa_supplicant S13rpcbind S58ntpd
K15htcacheclean K87restorecond S15mdmonitor S70spice-vdagentd
K15httpd K88sssd S22messagebus S80postfix
K15svnserve K89rdisc S23NetworkManager S82abrt-ccpp
K36mysqld K95firstboot S24nfslock S82abrtd
K50dnsmasq K99rngd S24rpcgssd S90crond
K50netconsole S01sysstat S24rpcidmapd S95atd
K50snmpd S02lvm2-monitor S25blk-availability S99certmonger
K50snmptrapd S08ip6tables S25cups S99local
K60nfs S08iptables S25netfs
K69rpcsvcgssd S10network S26acpid
K73winbind S11auditd S26haldaemon

这些都是链接文件lrwxrwxrwx,链接的路径都是/etc/init.d中的脚本文件。
[root@Hao rc.d]# ll rc3.d/ | grep ab
lrwxrwxrwx. 1 root root 19 Feb 10 19:46 S08ip6tables -> ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Feb 10 19:44 S08iptables -> ../init.d/iptables
lrwxrwxrwx. 1 root root 26 Feb 10 19:51 S25blk-availability -> ../init.d/blk-availability
lrwxrwxrwx. 1 root root 19 Feb 10 19:46 S82abrt-ccpp -> ../init.d/abrt-ccpp
lrwxrwxrwx. 1 root root 15 Feb 10 19:46 S82abrtd -> ../init.d/abrtd
K开头的文件意味着是要关闭进程的文件,S开头的进程则是开启的进程,之后的数字表示启动的顺序,比如S23NetworkManager和S80postfix都要依赖S10network,如果这个顺序错了或者电脑了,那么和网络有关的程序都会启动错误,这个也在管理服务器的过程中也需要定期去看一下。
对比rc3.d/目录与rc5.d/
[root@Hao rc.d]# diff rc3.d/ rc5.d/
Only in rc3.d/: K30spice-vdagentd
Only in rc5.d/: S70spice-vdagentd
发现spice-vdagentd服务在runlevel 3中是KILL的,在runleve5是START的,spice-vdagentd服务是Redhat桌面虚拟组件之一,所以在runlevel3中没必要开,在runleve5中是要开启的,否则Linux将无法提供桌面服务,除此之外,两个运行级别没区别。
还记得那个之前提到的决策书吗?核心策略对应的会启动的内容都是在这里,比如和平局势(之于runlevel 1)下启用基本的民防系统(之于S01sysstat)就可以了,冷战时期(之于runlevel 3)除了民防以外,还开启了自卫系统(之于S08iptables)、消息传递(S10network)、警报机制(之于S22messagebus)、派遣间谍(之于sshd)、调动步兵部队(之于httpd)等等,如果是战争时期(之于runlevel 5)除了上面种种之外还要启动更多的战争活动,调度更强大的部队。
2.相关命令
通过chkconfig –level 3 sshd off在运行级别中的开启或者关闭服务。
通过chkconfig –list sshd来查看sshd在所有runlevel中的状态。

[root@Hao rc.d]# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@Hao rc.d]# chkconfig --level 3 sshd off [root@Hao rc.d]# chkconfig --list sshd
sshd 0:off 1:off 2:on 3:off 4:on 5:on 6:off

init 6是重启,init 0是关机。
# who –r 查看当前级别
run-level 5 2012-09-02 06:23
3.附文1.不小心把init 默认的运行级别设为6怎么办
通过查看 /etc/rc.d/rc6.d可以看到,runlevel 6中只有两个服务是开启的,分别是 S00killall和S01reboot,如果默认的运行级别设为6,那么重启之后,机器会不停重启。
如果真的意(shou)外(jian)把默认的runlevel运行级别设置成了6,那么需要如下操作更改默认运行级别。在GRUB界面按e
然后选中第二行,再按e进入
在出现的命令行后加 [\空格]1 (单用户),按Enter键确认操作并后退到Linux配置页面
再按b重启Linux进入单用户模式就可以修改了,我们这里改为3好了。然后重启就可以了。
4.推荐文章
Linux启动这个很不经意的过程里面包含了太多的内容,本文只是介绍了很小的一部分,推荐大家去深入了解,顺便推荐几篇还不错的文章。
rc.d rc.local rc.sysinit 等Linux系统脚本启动顺序详解 作者:jsxubar (朱秀龙)
Linux2.6 内核的 Initrd 机制解析 作者: dazhi.li(李 大治)
原文链接:https://www.cnblogs.com/LinuxBlogs/p/4389415.html
init命令详解的更多相关文章
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- Git 常用命令详解
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...
- Linux/CentOS 服务安装/卸载,开机启动chkconfig命令详解|如何让MySQL、Apache开机启动?
chkconfig chkconfig在命令行操作时会经常用到.它可以方便地设置和查询不同运行级上的系统服务.这个可要好好掌握,用熟练之后,就可以轻轻松松的管理好你的启动服务了. 注:谨记chkcon ...
- 【转】centos关机与重启命令详解
连接:http://blog.csdn.net/jiangzhengdong/article/details/8036594 Linux centos关机与重启命令详解与实战 Linux centos ...
- 【初级】linux pwd 命令详解及使用方法实战
pwd:查看当前工作目录 前言: Linux中用 pwd 命令来查看”当前工作目录“的完整路径,就是经常提及的所在目录,多用在生产环境多级目录中查看当前所在路径,使用此命令能给运维人员/操作人员带来很 ...
- Linux Crontab 定时任务 命令详解
一. Crontab 介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行. 1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调 ...
- Linux命令详解之—pwd命令
Linux的pwd命令也是一个非常常用的命令,本文为大家介绍下Linux中pwd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux pwd命令用于显示工作目录. 执行pwd指 ...
- Git 常用命令详解(二)
Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) Git 的更多介绍 ...
随机推荐
- 将Tensor输出到文件
) local file = io.open('/home/xbwang/Desktop/part2original','a') ,length do number = part2[j] file:w ...
- js之checkbox判断常用示例
checkbox常用示例可参考: 关于checkbox自动选中 checkbox选中并通过ajax传数组到后台接收 MP实战系列(十三)之批量修改操作(前后台异步交互) 本次说的是,还是关于智能门锁开 ...
- MySQL插入emoji表情失败问题的解决方法
前言 之前一直认为UTF-8是万能的字符集问题解决方案,直到最近遇到这个问题.最近在做新浪微博的爬虫, 在存库的时候发现只要保持emoji表情,就回抛出以下异常: Incorrect string v ...
- mysql 二进制日志binary log操作简单命令
show master status \G; #查看当前正在记录的二进制日志 show binary logs; #查看binary log 所有文件列表 show binlog events; #查 ...
- “error : unknown filesystem”的解决的方法
解决方法例如以下: 1:首先使用ls命令显示出ubuntu分区的安装信息: 1 grub rescue>ls 通常会罗列出全部磁盘的分区信息,比方(hd0,msdos1)(hd0,msdos2) ...
- oracle 表的创建与管理 约束
在 Oracle 之中数据表就被称为数据库对象,而对象的操作语法一共有三种:· 创建对象:CREATE 对象类型 对象名称 [选项]:· 删除对象:DROP 对象类型 对象名称 [选项]:· 修改对象 ...
- python通过cx_oracle操作数据库过程简单记录
1.环境配置 环境配置过程中,需要关注软件版本是否一致,主要包括:oracle客户端版本.cx_oracle版本.python版本: 2.操作记录 (1)验证环境是否正常:(无报错即为正常) impo ...
- iOS在framework中使用CoreData出现崩溃问题及解决方法
公司项目中有一个功能,保存授权令牌数据.最开始只有一条数据,所以就直接保存在了userdefaults中.后来需要两条数据,还是保存在userdefaults中,其中一条为固定的,另一条不固定可以进行 ...
- 树莓派3B+学习笔记:1、安装官方系统
1.登录树莓派官方网站www.raspberrypi.org,点击Downloads: 2.点击NOOBS: 3.选择下载方式,可以选择下载BT种子或直接下载,这里我用迅雷直接下载,下载速度还是很快的 ...
- 使用git管理代码
上传工程 1.登录github后,点击右上角带有+号的图标,输入仓库名创建仓库(Repository). 2.在项目文件夹下执行以下命令: touch README.md git init 如果工程中 ...