Linux入门——启动和关闭

Linux入门——启动和关闭

摘要:本文主要学习了Linux的启动和关闭。

配置文件

说明

在CentOS 7之前可以通过修改inittab配置文件来修改开机启动模式。

CentOS 7由于使用systemd而不是init,所以不能通过修改inittab配置文件来修改开机启动模式,而是通过命令行。

文件格式

在Linux系统启动时,会启动init进程,init进程会根据/etc/inittab这个文件,在不同的运行级别启动相应的进程或执行相应的操作。

在/etc/inittab配置文件中定义的登记项都是以“:”隔开的四个段,即:

1 id:runlevels:action:process

登记项

id

每个登记项的标识符,用于唯一标识每个登记项,不能重复。

runlevels

系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,各级别之间直接写不用分隔符,如果为空,表示在所有的运行级别运行。

Linux的运行级别有:

1 0:表示关机,系统默认级别不能设为0,否则不能正常启动。
2 1:表示单用户模式,在这个模式中,用户登录不需要密码,禁止远程登录。
3 2:表示多用户模式,NFS服务不开启,没有网络服务。
4 3:表示完全的多用户模式,有NFS服务,登录进入命令行模式。
5 4:这个模式保留未用。
6 5:表示图形用户模式,登录进入图形界面。
7 6:表示重启系统,系统默认级别不能设为6,否则不能正常启动。

最常用到的是3和5。

action

表示对应登记项的process在一定条件下所要执行的动作。

具体动作有:

 1 respawn:当process终止后马上启动一个新的process。
 2 wait:当进入指定的runlevels后process才会启动一次,并且到离开这个runlevels终止。
 3 initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,不能是0和6,你懂的。
 4 sysinit:系统初始化,只有系统开机或重新启动的时候,这个process才会被执行一次。
 5 powerwait:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process。
 6 powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,不会等待这个进程完成,它会直接执行相应的process。
 7 powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应的process。
 8 powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process。
 9 ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process。
10 boot:只有在引导过程中,才执行该进程,但不等待该进程的结束,当该进程死亡时,也不重新启动该进程。
11 bootwait:只有在引导过程中,才执行该进程,并等待进程的结束,当该进程死亡时,也不重新启动该进程。
12 off:如果process正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项。
13 once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项,当该进程死亡时,init也不重新启动该进程。

process

表示启动哪个程序或脚本或执行哪个命令等。

查看

CentOS 7之前的配置文件:

 1 [root@localhost ~]#
 2 #
 3 # inittab This file describes how the INIT process should set up
 4 # the system in a certain run-level.
 5 #
 6 # Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
 7 # Modified for RHS Linux by Marc Ewing and Donnie Barnes
 8 #
 9 
10 # Default runlevel. The runlevels used by RHS are:
11 # 0 - halt (Do NOT set initdefault to this)
12 # 1 - Single user mode
13 # 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
14 # 3 - Full multiuser mode
15 # 4 - unused
16 # 5 - X11
17 # 6 - reboot (Do NOT set initdefault to this)
18 # 
19 id:3:initdefault:
20 
21 # System initialization.
22 si::sysinit:/etc/rc.d/rc.sysinit
23 ...
24 [root@localhost ~]#

CentOS 7的配置文件:

 1 [root@localhost ~]# cat /etc/inittab
 2 # inittab is no longer used when using systemd.
 3 #
 4 # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
 5 #
 6 # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
 7 #
 8 # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
 9 #
10 # multi-user.target: analogous to runlevel 3
11 # graphical.target: analogous to runlevel 5
12 #
13 # To view current default target, run:
14 # systemctl get-default
15 #
16 # To set a default target, run:
17 # systemctl set-default TARGET.target
18 #
19 [root@localhost ~]#

命令行

在CentOS 7中,可以使用命令行来设置运行级别。

查看当前运行级别:

1 systemctl get-default

设置当前运行级别为3,开机为命令行模式:

1 systemctl set-default multi-user.target

设置当前运行级别为5,开机为图形界面:

1 systemctl set-default graphical.target

启动过程

加电自检

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

内核引导

操作系统接管硬件以后,首先读入“/boot”目录下的内核文件。

运行init

init进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init程序首先是需要读取配置文件/etc/inittab。

启动进程

init进程会根据配置文件的运行级别启动相应的进程。

系统初始化

在init的配置文件中调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

建立终端

rc执行完毕后,返回init。这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。

用户登录系统

一般来说,用户的登录方式有三种:

(1)命令行登录

(2)ssh登录

(3)图形界面登录

关闭系统

说明

在Linux领域内大多用在服务器上,很少遇到关机的操作。毕竟服务器上跑一个服务是永无止境的,除非特殊情况下,不得已才会关机。

正确的关机流程为:

1 sync > shutdown > reboot > halt

不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。

命令

sync

将数据由内存同步到硬盘中。

同步:

1 [root@localhost ~]# sync

shutdown

关机指令。

立马关机:

1 [root@localhost ~]# shutdown –h now

在今天20:25关机:

1 [root@localhost ~]# shutdown –h 20:25

十分钟后关机:

1 [root@localhost ~]# shutdown –h +10

立马重启:

1 [root@localhost ~]# shutdown –r now

十分钟后重启:

1 [root@localhost ~]# shutdown –r +10

reboot

重启,等同于“shutdown –r now”。

重启:

1 [root@localhost ~]# reboot

poweroff

关闭系统,等同于“shutdown –h now”。

关闭:

1 [root@localhost ~]# poweroff

halt

关闭系统,等同于“shutdown –h now”和“poweroff”

关闭:

1 [root@localhost ~]# halt

init

运行指定进程。

关闭:

1 [root@localhost ~]# init 0

重启:

1 [root@localhost ~]# init 6
原文地址:https://www.cnblogs.com/shamao/p/13403208.html