Linux 命令 init 的使用说明
init 是 Linux 系统操作中不可缺少的程序之一。所谓的 init 进程,它是一个由内核启动的用户级进程。 init 进程由 0 进程创建,完成系统的初始化,是系统中所有其他用户进程的祖先进程。
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序 init 的方式,完成引导进程。所以, init 始终是第一个进程(其进程编号始终为1)。
Linux 中的所有进程都是由 init 进程创建并运行的。首先 Linux 内核启动,然后在用户空间中启动 init 进程,再启动其他系统进程。在系统启动完成后, init 将变成为守护进程监视系统其他进程。
内核会在过去曾使用过 init 的几个地方查找它,它的正确位置(对Linux系统来说)是 /sbin/init 。如果内核找不到 init ,它就会试着运行 /bin/sh ,如果运行失败,系统的启动也会失败。
init 一共分为7个级别,这 7 个级别的所代表的含义如下:
等级 | 描述 |
---|---|
0 | 停机或者关机(千万不能将 initdefault 设置为0) |
1 | 单用户模式,只root用户进行维护 |
2 | 多用户模式,没有使用NFS(Net File System),不能联网 |
3 | 完全多用户模式(标准的运行级别),即命令行界面(字符界面) |
4 | 安全模式 |
5 | (X Window)图形化界面模式(即图形界面) |
6 | 重启(千万不要把 initdefault 设置为6) |
用法如下。 比如:
$ #切换到多用户-命令行模式
$ init 3
$ #切换到切换到图形化界面
$ init 5
请注意
, init 命令需要 root 权限,普通用户进行操作系统会索要超级管理员的密码来获取执行权限。
系统开机时一般会叫我们选择以何种模式(命令行界面/图形化界面)进入(前提是系统装了图形化界面),或者系统默认以某种模式进入。那么该如何设置默认模式?
CentOS 环境下根目录编辑有关文件 /etc/inittab
,操作如下:
$ vim /etc/inittab
1. # inittab This file describes how the INIT process should set up
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:
第 16 行的代码可以 设置默认启动模式。
如果设置为 id:3:initdefault: ,代表默认启动为命令行模式;如果设置为 id:5:initdefault: ,则代表默认图形化界面模式。
修改完毕后重启即可:
# reboot
但是 , 在 测试的 CentOS 7 新版本中,已经发生了改变,如下:
$ vim /etc/inittab
# inittab is no longer used when using systemd.
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#
这块已经属于额外的内容了,若你想了解更多,请参考我的另一篇博客:点击查看