第2章 Linux字符界面
2.1 Linux字符界面简介
对Linux服务器进行维护基本上都是在字符界面下进行的,本节主要讲述如何进入字符界面、关机以及重启计算机。
2.1.1 进入Linux字符界面
要进入Linux系统的字符界面可以通过字符界面、图形界面下的终端以及虚拟控制台等多种方式。
1. Linux字符界面
安装Linux系统之后,系统启动时默认进入的是图形化界面,可以通过以下命令修改为进入字符界面,所做改变在系统重新引导之后即可生效。
[root@rhel ~]# systemctl get-default
graphical.target
//查看计算机系统启动后要进入的默认目标,graphical.target表示图形化界面
[root@rhel ~]# 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.
//将multi-user.target目标设置为启动计算机系统后要进入的默认目标,multi-user.target表示字符界面
如果用户使用命令界面登录Linux系统,在系统被引导后,会看到图2.1所示的登录提示界面。
Linux系统用户登录分两步:第一步输入用户的登录名,系统根据该登录名识别用户;第二步输入用户的密码。当用户正确地输入用户名和密码之后,就能合法地进入系统,屏幕会显示图2.2所示的信息。这时 就可以对系统做各种操作了,注意超级用户root登录的提示符是“#”,而其他用户登录的提示符是“$”。
图2.1 字符界面登录提示
图2.2 已登录字符界面
如果要注销当前用户的登录,可以使用logout命令。登录命令界面之后,也可以通过输入startx命令启动Linux图形化桌面(前提是已经安装了图形化桌面的软件包)。
备注:
要使Linux系统默认进入图形化界面,使用命令systemctl set-default graphical.target。
2.使用终端
在Linux系统图形化桌面环境中提供了打开终端命令行界面的方式,终端方式允许用户通过输入命令来管理计算机。
在Linux系统图形界面中,单击面板上的【应用程序】→【工具】→【终端】,或者是右击桌面,选择【在终端中打开】,打开图2.3所示的终端界面。在终端命令行界面中可以直接输入命令并执行,执行的结果显示在终端界面中。如果要退出终端界面,可以单击终端界面右上角的“×”按钮,或在终端界面中输入命令exit,或者按[Ctrl+d]键退出。
图2.3 终端界面
3.使用虚拟控制台
Linux系统可以同时接受多个用户登录,还允许用户在同一时间进行多次登录,这是因为Linux系统提供了虚拟控制台的访问方式。在字符界面下,虚拟控制台的选择可以通过按下[Alt]键和一个功能键来实现,通常使用F1~F6键。比如用户登录后,按下[Alt+F2]键,用户可以看到“login:”提示符,说明用户进入了第二个虚拟控制台。然后只须按[Alt+F1]键,就可以回到第一个虚拟控制台。
如果用户在图形界面下,那么可以使用[Ctrl+ Alt+F2]~[Ctrl+ Alt+F6]键切换字符虚拟控制台,使用[Ctrl+Alt+F1]可以切换到图形界面。虚拟控制台可使用户同时在多个控制台上工作,真正体现Linux系统多用户的特性。用户可以在某一虚拟控制台上进行的工作尚未结束时,切换到另一虚拟控制台开始另一项工作。
2.1.2 关闭和重启Linux系统
在Linux系统下,常用的关闭/重启系统的命令有shutdown、halt、reboot和systemctl等,每个命令的内部工作过程是不同的。
1. shutdown命令
shutdown命令可以安全地关闭或重启Linux系统,有些用户会使用直接断掉电源的方式来关闭计算机,这是十分危险的。Linux系统与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,在有的系统中甚至会损坏硬件设备。
在系统关机前使用shutdown命令,系统管理员会通知一条警告信息给所有登录的用户,告诉他们系统将要关闭,新的用户不能再登录。直接关机或者延迟一定的时间才关机都是可能的,还可能重启。
shutdown命令还允许用户指定一个时间参数,该参数可以是一个精确的时间,也可以是从现在开始的一个时间段。精确时间的格式是hh:mm,表示小时和分钟,时间段由“+”和分钟数表示。系统执行该命令后,会自动进行数据同步的工作。
命令语法:
shutdown [选项] [时间] [警告信息]
命令中各选项的含义如表2.1所示。
表2.1 shutdown命令中选项的含义
例2.1:立即关闭计算机系统。
[root@rhel ~]# shutdown-h now
例2.2:定时45分钟之后关闭计算机系统。
[root@rhel ~]# shutdown-h +45
//在这里使用shutdown-h 45和shutdown-h +45起到的作用一样
例2.3:立即重新启动计算机系统,并发出警告信息。
[root@rhel ~]# shutdown-r now "system will be reboot now."
例2.4:定时在1点38分重新启动计算机系统。
[root@rhel ~]# shutdown-r 01:38
2. halt命令
使用halt命令就是调用“shutdown-h”命令执行关机任务。
命令语法:
halt [选项]
命令中各选项的含义如表2.2所示。
表2.2 halt命令选项的含义
例2.5:使用halt命令关闭系统。
[root@rhel ~]# halt
3. reboot命令
reboot的工作过程与halt相似,不过reboot是引发计算机重启,而halt是引发计算机关闭。它的选项与halt相似。
命令语法:
reboot [选项]
命令中各选项的含义如表2.3所示。
表2.3 reboot命令中选项的含义
例2.6:使用reboot命令重启计算机系统。
[root@rhel ~]# reboot
例2.7:模拟重启系统(只有记录并不会真的重启系统)。
[root@rhel ~]# reboot-w
4. systemctl命令
使用systemctl命令可以关闭或重新启动Linux系统。
命令语法:
systemctl [选项] [系统命令]
systemctl系统命令的描述如表2.4所示。
表2.4 systemctl系统命令的描述
例2.8:重新启动Linux系统。
[root@rhel ~]# systemctl reboot
例2.9:关闭Linux系统。
[root@rhel ~]# systemctl halt
2.1.3 目标
RHEL 7之前的版本使用运行级别代表特定的操作模式。运行级别被定义为7个级别,用数字0到6表示,每个运行级别可以启动特定的一些服务。RHEL 7使用目标(target)替换运行级别。目标使用目标单元文件描述,目标单位文件扩展名是.target,目标单元文件的唯一目标是将其他systemd单元文件通过一连串的依赖关系组织在一起。比如graphical.target单元,用于启动一个图形会话,systemd会启动像GNOME显示管理(gdm.service)、账号服务(axxounts-daemon)这样的服务,并且会激活multi-user.target单元。相似的multi-user.target单元,会启动必不可少的NetworkManager.service、dbus.service服务,并激活basic.target单元。
每一个目标都有名字和独特的功能,并且能够同时启用多个。一些目标继承其他目标的服务,并启动新服务。systemd 提供了一些模仿System V init启动级别的目标,仍可以使用旧的telinit启动级别命令切换。
RHEL 7系统预定义了一些目标,目标和以前版本系统的运行级别有一些不同。为了兼容, systemd也提供一些目标映射为System V init的运行级别,具体的对应关系如表2.5所示。
表2.5 目标和运行级别的对应关系
在/lib/systemd/system目录下定义runlevelX.target文件的目的主要是为了能够兼容以前的运行级别的管理方法。 事实上,/lib/systemd/system/runlevel3.target同样是被软链接到multi-user. target。
[root@rhel ~]# ls-l /lib/systemd/system/runlevel*.target
lrwxrwxrwx. 1 root root 15 2月 12 05:45 /lib/systemd/system/runlevel0.target-> poweroff.target
lrwxrwxrwx. 1 root root 13 2月 12 05:45 /lib/systemd/system/runlevel1.target-> rescue.target
lrwxrwxrwx. 1 root root 17 2月 12 05:45 /lib/systemd/system/runlevel2.target-> multi-user.target
lrwxrwxrwx. 1 root root 17 2月 12 05:45 /lib/systemd/system/runlevel3.target-> multi-user.target
lrwxrwxrwx. 1 root root 17 2月 12 05:45 /lib/systemd/system/runlevel4.target-> multi-user.target
lrwxrwxrwx. 1 root root 16 2月 12 05:45 /lib/systemd/system/runlevel5.target-> graphical.target
lrwxrwxrwx. 1 root root 13 2月 12 05:45 /lib/systemd/system/runlevel6.target-> reboot.target
以前的Linux系统都是通过修改/etc/inittab文件中的id:x:initdefault来改变默认运行级别的。RHEL 7放弃了在/etc/inittab文件中进行修改的方式,而使用systemctl命令改变目标。比如下面这个例子改变当前目标为multi-user.target。
[root@rhel ~]# systemctl isolate multi-user.target