导言
很久没写linux博文了,最近的一次是第八篇文章,教了shutdown命令,本次教init命令。
init命令是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
redhat6和redhat7区分
在redhat7中,init的进程换成了systemd,进程号为1。
我们可以用pstree去查看。Redhat7和Redhat6的区别
在redhat6中,使用pstree可以明确的发现初始化进程为1(init):
我们可以用pstree去查看。Redhat7和Redhat6的区别
pstree -p
而在redhat7中,该进程为1的是systemd
输入同样的命令
pstree -p
运行级别
说到init,就不得不说说系统的运行级别了。
到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在/etc/inittab中查看它的英文介绍。
在大多数的linux发行版本中,通常有以下的runlevel:
运行级别 | 模式说明 | 简介 |
---|---|---|
0 | 系统停机模式 | 系统默认运行级别不能设置为0,否则不能正常启动,机器关闭。 |
1 | 单用户模式 | root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录。 |
2 | 多用户模式 | 没有NFS网络支持。 |
3 | 完整的多用户文本模式 | 有NFS,登陆后进入控制台命令行模式。 |
4 | 系统未使用 | 保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置。 |
5 | 图形化模式 | 登陆后进入图形GUI模式,X Window系统。 |
6 | 重启模式 | 默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启。 |
多数的桌面的linux系统缺省的runlevel是5,用户登陆时是图形界面,而多数的服务器版本的linux系统缺省的runlevel是3,用户登陆时是字符界面 runlevel 1和2除了调试之外很少使用,runlevel s和S并不是直接给用户使用,而是用来为Single user mode作准备。
linux的运行模式比起windows的启动模式的优势在于:你可以在系统空闲时使用init命令切换你现在使用的runlevel,另外,当你关闭或者启动linux系统时你已经不知不觉中切换你的runlevel,系统关机进程需要调用runlevel(0或6)来关闭所有正在运行中的进程。
值得注意的是
RHEL7不再使用/etc/inittab文件进行默认的启动级别配置
systemd使用比sysvinit的运行级更为自由的target替代。
第3运行级用multi-user.target替代。
第5运行级用graphical.target替代。
runlevel3.target和runlevel5.target分别是
指向 multi-user.target和graphical.target的符号链接。
init命令
作用
切换系统运行级别
用法
init [OPTIONS...] {COMMAND}
详细全选项参数解释
长选项 | 含义(作用) |
---|---|
--help | 展示init命令帮助信息 |
--no-wall | 在halt/power-off/reboot 之前之前不要发送留言信息 |
命令参数说明
Commands | 功能 |
---|---|
0 | 关闭系统(机器) |
6 | 重启系统(机器) |
2,3,4,5 | 启动runlevelX.target 单元 |
1,s,S | 进入救援模式( rescue mode) |
q,Q | 重新加载init守护进程配置 |
u,U | 重新执行init守护进程 |
默认运行级别相关
值得注意的是,虽然我们仍然可以使用init 0
关闭系统,但在centOS7甚至是Redhat7中,init的命令已经是兼容模式的命令,不过切换运行级别的指令换成了使用systemctl
,这指令十分的重要,观看我写的第一篇linux博文的时候,那部分的时候,其实有用到这个命令,就是使用网络的时候,比如systemctl restart network
,这个命令可能以后再继续讲解。
在这里,我会使用systemctl
而不是init
命令去实现。
查看默认运行级别
runlevel
systemctl get-default
这两个命令都可以查看默认运行级别,运行结果如下所示:
设置默认第三启动级别
以下不采取截图,直接命令及其返回结果,注意需要输入你的root账号密码。
[yuyuntan@localhost Desktop]$ systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
设置默认第五启动级别
[yuyuntan@localhost Desktop]$ systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
总结
目前为止,大概是这些需要掌握的init命令及运行级别,如果后期需要补充或者有其他需要了解的,和我说说,我会相对修改。