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