一、Linux的基础使用--登录、开关机与在线、命令的查询帮助
一、Linux的基础使用
本文基于CentOS 7.x
1.1 X Window 与命令行模式的切换
CentOS中图形界面是名为X Window的窗口管理器环境,但通常服务器都是命令行界面。
通常,我们也称命令行界面为终端界面、Terminal或Console。
Linux默认情况下会提供六个终端来让用户登录,切换方式为:【Ctrl + Alt + F1 ~ F6】。
系统会将[F1]~[F6] 命名为 tty1~tty6的操作接口环境。
在登录后,我们会在行头看到形如[root@hostname ~]#
的字符,我们可以在后面输入命令。
上面字符中的~表示用户的 home 目录;举例来说,root 用户的 home 目录是/root,user 的 home 目录是 /home/user。
另外,在Linux中,默认 root 的提示字符为 # ,一般身份用户的提示字符为 $ ,所以我们上面字符举的例子中登录的是 root 用户
总结一下,切换环境方法如下:
- 【Ctrl + Alt + F1 ~ F6】:登录tty1~tty6终端界面(如果默认为图形界面,则tty1通常代表图形界面)
如果CentOS中已安装图形界面,我们在终端界面可以使用【startx】来启动图形界面。
如果希望默认使用图形界面,可以在管理服务的程序中,将【graphical.target】这个目标服务设置为默认即可。
如果我们在X Window 下希望强制重新启动 X ,我们可以使用【Alt + Ctrl + Backspace】。
1.2 命令行模式下命令的执行
命令行命令的格式如下:
[username@hostname ~]$ command [-options] parameter1 parameter2...
命令 选项 参数(1) 参数(2)
命令的详细说明如下:
-
command
命令中第一个输入的部分必须是命令(command)或可执行文件(例如shell脚本);
command
为命令的名称,例如改变工作命令的命令为cd等。 -
options
中括号[]表示是可选的,加入options的选项设置时,通常选项前会带
-
符号,例如:-h;我们也可以使用选项的完整全名,则选项前带有--
符号,例如 --help。 -
paramater
parameter1、parameter2为依附在选项后面的参数,或是command的参数。
-
命令、选项和参数通过空格进行区分,不论空几格shell都视作一格。
-
输入完命令之后,通过回车键开始执行命令。
-
命令过长时,可以使用反斜杠
\
来转义回车键,让命令连续到下一行。 -
在Linux系统之中,英文字母是区分大小写的;举例来说,cd和CD并不同。
1.3 修改支持语系
Linux是支持多国语系的,但终端(Terminal)在默认的情况下,无法支持以中文编码输出数据。这个时候,我们需要将支持语系改为英文,以让英文显示出正确的信息。操作方法如下
-
查看目前所支持的语系:locale
[username@hostname ~]$ locale LANG=zh_CN.utf8 # 当前用于输出的语系 LC_CTYPE="zh_CN.utf8" # 之后为各种信息输出时使用的特别语系 ... LC_ALL= # 全部的数据同步更新的设置值 # 上面的意思是说,目前的语系(LANG)为zh_CN.utf8,即简体中文的UTF-8
-
修改语系:LANG=目标语系
[username@hostname ~]$ LANG=en_US.utf8 # 修改LANG所用语系 [username@hostname ~]$ export LC_ALL=en_US.utf8 # 同步更新LC_ALL # LANG只和输出信息有关,需要修改其他信息输出所使用的的语系,则需要将LC_ALL所用语系一同修改 # 注意,仅修改LC_ALL的话,LANG所用语系不会被修改
1.4 基础命令的操作
-
显示日期与时间的命令:date
如果想在命令行直接显示目前Linux系统的时间,直接使用date即可显示:
[username@hostname ~]$ date Thu Jun 27 22:33:01 CST 2019 # CST表示当前中国所在时区
我们还可以使用date的格式化输出功能
[username@hostname ~]$ date +%Y/%m/%d 2019/06/27 [username@hostname ~]$ date +%H/%M 14:33
从上面的例子可以看出,命令之后的选项也有带正号【+】的情况。
-
显示日历的命令:cal
cal可以显示当前月份的日历。
除了本月的日历外,我们也可以显示整年的日历情况:cal 2019
所以,总的来说,cal命令的基本语法为:
[username@hostname ~]$ cal [month] [year] [username@hostname ~]$ cal 6 2019 # 显示2019年6月的日历
-
简单的计算器:bc
bc中简单的运算符:
- 加法:+
- 减法:-
- 乘法:*
- 除法:/
- 指数:^
- 余数:%
在bc中,默认输出整数;
如果需要输出小数点下数位,可以在bc中,通过
sacle=小数点位数
设置小数点位数。
1.5 几个重要的热键[Tab]、[Ctrl + C]、[Ctrl + D]
-
[Tab]按键
在
command
和parameter
文件后按[Tab]键会有不同的效果- [Tab]接在command后,为【命令补全】
- [Tab]接在parameter后,为【文件补齐】
-
[Ctrl + C]按键
用于中断目前程序,终止当前正在执行的命令
-
[Ctrl + D]按键
这个组合按键通常表示键盘输入结束,等价于
exit
;在命令行模式模式下,按下[Ctrl + D]可以直接离开命令行模式(直接退出当前用户登录)。
-
[Shift + {Page Up | Page Down}]按键
- [Shift + Page Up]:将命令行窗口向上翻页
- [Shift + Page Down]:将命令行窗口向下翻页
1.6 命令的查询与帮助
- 在命令行模式中,如果知道某个命令作用,却忘记了相关选项与参数,可先使用【命令 --help】的功能来查询相关信息。
- 如果想要了解没有使用过的命令或文件格式,可以使用man或是info来查询。
- 如果想要架设一些其他的服务,或想利用一整组的软件来完成某项功能,可以在/usr/sahre/doc下查询是否有对应的帮助文档。
info 和 man 的用途其实差不多,都是用来查询命令的用法或是文件的格式。
不过,man page 是一口气输出一堆信息;info page 是将一个说明文件拆成多个节点(node)显示,并有类似超链接的功能,增加了易读性,类似与命令行模式的说明网页,各个页面被称为节点。
info 命令是Linux 上才有的,易读性增强很多,但后面会提到,这种易读性要求一种 info 格式的文件来实现,没有这种格式文件的话,info 和 man 查询的结果是一样的(例如查询【info man】)。
1.6.1 man page
【man + 命令】:man 是 manual(操作说明)的简写,可用于查询文件或命令的帮助;当然,我们可以使用【man man】可以查看 man 命令的使用方法。
-
man page 中跟在命令后的特殊数字
使用man命令后,会看到一个帮助页面,可以使用【空格键】向下翻页;(假设输入了man date)第一行可用看到【DATE(1)】,其中的(1)是Linux中的代号,其常见的数字含义如下:
代号 代表内容 1 用户在shell环境中可以操作的命令或可执行文件 2 系统内核可以调用的函数与工具等 3 一些常用的函数(function)与函数库(library),大部分为C的函数库 4 设备文件的说明,通常是/dev下的文件 5 配置文件或是某些文件的格式 6 游戏(games) 7 惯例和协议,例如Linux文件系统、网络协议、ASCII代码等的说明 8 系统管理员可用的管理命令 9 跟内核有关的文件 -
man page 的大致组成
而man page大致组成如下表:
代号 内容说明 NAME 简短的命令、数据名称说明 SYNOPOSIS 简短的命令语法(syntax)简介 DESCRIPTION 较为完整的说明(最好仔细看这一部分) OPTIONS SYNOPOSIS中有列举的所有可用的选项说明 COMMANDS 可以执行的命令 FILES 该程序或数据使用或参考或链接的某些文件 SEE ALSO 可以参考与这个命令或数据相关的其他说明 EXAMPLE 参考范例 man page 中的数据通常存放在/usr/share/man这个目录中;可以通过修改/etc/man_DB.conf来修改man page查找路径(也就是数据存放路径)。
-
man page 页面的常用按键
在 man page 中,我们除了方向键,还有一些快捷键可以方便我们使用,常用的几个如下:
按键 进行操作 空格键、[Page Down] 向下翻一页 [Page Up] 向上翻一页 [Home] 去到第一页 [End] 去到最后一页 /String(?String) 向【下】(或【上】)查找字符串String n(N) 向【下】(或【上】)继续上一次的查找 q 退出man page
1.6.2 info page
对于info 指令,需要查询目标的说明文件必须是 info 格式才可以使用 info 的特殊功能, 而支持 info 命令的文件默认存放在 /usr/share/info/ 目录中;如果用 info 查询时没有 info 格式的文件,那么查询结果就会和 man 一样了。
和 man 命令有一些类似,我们可以使用【info info】来查看 info 的使用说明。
-
info page 中一些关键字的意义
在我们查询 info 后,第一行会显示很多信息,其含义大致如下:
关键字 含义 File 提供该 info page 页面数据的文件 Node 当前节点的名字(例如头节点为Top) Next 下一个节点的名称;我们可以按【N】到下一个节点 Up 上一层节点的总览画面(注意是上一层,类似于树的父节点);可以按【U】到上一层节点 Pre 前一个节点(如果是Top节点则为空);可以按【P】到前一个节点 -
info page 中的常用按键
如果我们在查看 info 页面时忘记了如何使用, 我们可以直接按下【h】,系统会提供一些基本的按键功能介绍。
一些 info page 中常用的按键如下:
按键 进行操作 空格键、[Page Down] 向下翻一页 [Page Up] 向上翻一页 [Tab] 节点之间移动,有节点的地方通常以 * 显示 [Enter] 光标在节点上时,可以进入节点 b(e) 移动光标到该info界面的第一处(最后一个节点处) n(p) 前往下一个(上一个)节点处 u 向上移动一层 s、/ 在info page 中进行查找 h、? 显示帮助选项 q 退出info page
1.7 正确的关机方法
在Linux服务器中,可能有多人同时在同一主机上工作,如果不正常的关机,可能造成文件系统的毁损。因此要关机时要注意以下几件事:
-
观察系统的使用状态
例如,我们可以使用【who】查看目前有谁在线;
使用【netstat -a】查看网络的联机状态;
执行【ps-aux】查看后台执行的程序。
-
通知在线用户关机的具体时间
在关机前,我们可以提前通知在线用户系统即将关机,这是我们会使用到shutdown的特别指令;
下面我们给出几个与关机或重新启动相关的命令。
-
将数据同步写入硬盘的命令:sync
从操作系统和计算机组成原理的相关知识中,我们可以了解到:计算机所有的数据都需要被读入内存才能够被cpu处理,但数据又常常需要由内存写回硬盘(例如执行保存操作)。因为硬盘速度远慢于内存,因此频繁的在内存和硬盘中对数据进行写入或读出会大大影响系统的性能。
为此,Linux系统中,为了加快数据读取速度,某些已加载在内存中的数据不会直接被写回硬盘而是暂时存在内存中,以方便cpu下一次的使用。
但考虑这样一种情况:系统因为一些特殊情况,造成了不正常关机,这是因为数据可能还暂存在内存而不是硬盘中,可能导致数据的更新不正常。这时,我们可以使用【sync】这个命令来进行数据的写入操作:
在命令行模式下输入【sync】,可以将内存中尚未更新的数据写入硬盘。所以我们在系统关闭或是重启之前最好多执行几次sync命令。
sync最好能够在在 root 权限下使用:虽然一般账号也能够使用sync命令,但一般账号只能更新它自己使用的数据而不是像 root 一样更新整个系统的数据。
-
常用的关机指令:shutdown
如果我们是以物理终端(tty1 ~ tty6)登录系统,用任何身份都可以使用shutdown关机;如果我们使用远程管理工具(例如通过 pietty 使用 ssh 服务来登录),那么只有 root 用户有有权力关机。
我们可以使用 shutdown 完成以下工作:
- 自由选择关机模式(关机或是重启)
- 设置关机时间
- 自定义关机信息(在关机之前,将自己设置的关机信息发送给其它在线用户)
- 仅发出警告信息(仅发送警告信息而不是真的要关机)
下面是 shutdown 的基础语法,更详细的相关语法应该使用 man 命令自行查询。
[root@hostname ~]# shutdown [-k -r -h -c] [时间] [警告信息] 选项和参数: -k : 并不是真的关机,仅发送警告信息 -r : (将系统的服务停止之后)在指定时间后重启,如为 now 则立即重启 -h : (将系统的服务停止之后)在指定时间后关机,如为 now 则立即关机 -c : 取消已经在进行的 shutdown 命令内容(取消关机)
-
重启:reboot,和另外的关机指令:halt、poweroff
这三个命令都可以进行重启和关机;因为三个命令调用的函数库都差不多,所以当使用【man reboot】时,会同时出现三个命令的用法。
一般重启时,我们可以同时使用 sync 和 reboot 命令:
[root@hostname ~]# sync; sync; sync; reboot
而后续两个关机和前面介绍的 shutdown 区别如下:
[root@hostname ~]# halt # 系统停止,屏幕可能会保留已经停止的信息 [root@hostname ~]# poweroff # 系统关机