20220807 04. 首次登陆与线上求助
4.1 首次登陆系统
s 一般来说,我们不建议您直接使用 root 的身份登陆系统喔!请使用一般帐号登陆!等到 有需要修改或者是创建系统相关的管理工作时, 才切换身份成为 root!为什么呢?因为系统 管理员的权限太高了!而 Linux 下面很多的指令行为是“没有办法复原”的!
登出前最好将所有不需要的程序都关闭了再登出或关机啊,登出并不是关机!只是让你的帐号离开系统而已
Linux默认的情 况下会提供六个Terminal来让使用者登陆
以 CentOS 7 为例,由于我们这次安装的练习机, 默认是启动图形界面的,因此这个 X 窗口将 会出现在 tty1 界面中。如果你的 Linux 默认使用纯命令行,那么 tty1~tty6 就会被文字界面占 用
其实,所谓的窗口环境,就是:“文字界面加上 X 窗口软件”的组合!因此,文字界面是一定会 存在的,只是窗口界面软件就看你要不要启动而已。
从这一版 CentOS 7 开始,已经取消了使用多年的 SystemV 的服务管理方式,也就是 说,从这一版开始,已经没有所谓的“执行等级 (run level) ”的概念了! 新的管理方法使用 的是 systemd 的模式,这个模式将很多的服务进行相依性管理。以
每个 人都会有自己的“工作目录”,这个目录是使用者可以完全掌控的, 所以就称为“使用者个人主 文件夹”了。一般来说,主文件夹都在/home下面, 以鸟哥这次的登陆为例,我的帐号是 dmtsai,那么我的主文件夹就应该在/home/dmtsai/啰!
~
符号代表的是“使用者的主文件夹”的意思,他是个"变量"
举例来说,root的主文件夹在/root, 所以 ~ 就代表/root的意思。 而dmtsai的主文件夹在/home/dmtsai
在Linux当中,默认root的提示字符为 #
,而一般身份使用者的提示字符 为 $
登出Linux:exit
4.2 文字模式下指令的下达
其实我们都是通过“程序”在跟系统作沟通的,本章上面提到的窗口管理员或文字模式都是一组 或一只程序在负责我们所想要完成的任务。 文字模式登陆后所取得的程序被称为壳 (Shell),这是因为这支程序负责最外面跟使用者(我们)沟通,所以才被戏称为壳程序!
4.2.1 开始下达指令
command [-options] parameter1 parameter2 ...
指令 选项 参数(1) 参数(2)
-
指令, 选项, 参数等这几个咚咚中间以空格来区分,不论空几格 shell 都视为一格
-
指令太长的时候,可以使用反斜线
\
-
在 Linux 系统中,英文大小写字母是不一样的
语系的支持
Linux是可以支持多国语系的,若可能的话, 屏 幕的讯息是会以该支持语系来输出的。但是,我们的终端机接口(terminal)在默认的情况 下, 无法支持以中文编码输出数据的。这个时候,我们就得将支持语系改为英文,才能够以 英文显示出正确的讯息。
# 1. 显示目前所支持的语系
locale
# 2. 修改语系成为英文语系
## 这样设置只在当前会话有效
LANG=en_US.utf8
export LC_ALL=en_US.utf8
# 3. 验证已修改
date
locale
4.2.2 基础指令的操作
-
显示日期与时间的指令:
date
-
显示日历的指令:
cal
-
简单好用的计算机:
bc
显示日期的指令: date
# 显示当前Linux系统的时间
date
# 格式化
date +%Y/%m/%d
2022/08/07
date +%H:%M
17:05
指令之后的选项除了前面带有减号“-”之外,某些特殊情 况下, 选项或参数前面也会带有正号“+”的情况
显示日历的指令: cal
# 列出当前这个月份的月历
cal
# 显示整年的月历情况
cal 2022
# 语法
cal [month] [year]
cal 8 2022
某些指令有特殊的参数存在, 若输入错误的参数,则该指令会有错误讯息的提 示,通过这个提示我们可以借以了解指令下达错误之处
简单好用的计算机: bc
作一些简单的加减乘除
# 进入计算机工作环境
bc
# 设置要输出的小数点后位数,默认为 0
scale=number
# 推出工作环境
quit
在命令行界面里面下达指令时,会有两种主要的情况:
-
一种是该指令会直接显示结果然后回到命令提示字符等待下一个指令的输入;
-
一种是进入到该指令的环境,直到结束该指令才回到命令提示字符的环境。
4.2.3 重要的几个热键[Tab], [ctrl]-c, [ctrl]-d
[Tab]按键
-
[Tab] 接在一串指令的第一个字的后面,则为“命令补全”;
-
[Tab] 接在一串指令的第二个字以后时,则为“文件补齐”!
-
若安装 bash-completion 软件,则在某些指令后面使用 [tab] 按键时,可以进行“选项/参数的补齐”功能!
[Ctrl]-c 按键
可以将正在运行中的指令中断
[Ctrl]-d 按键
这个组合按键通常代表着: “键盘输入结 束(End Of File, EOF 或 End Of Input)”的意思! 另外,他也可以用来取代exit的输入
[shift]+{[PageUP]|[Page Down]}按键
如果你在纯文本的画面中执行某些指令,这个指令的输出讯息相当长啊!所以导致前面的部 份已经不在目前的屏幕画面中, 所以你想要回头去瞧一瞧输出的讯息,那怎办?其实,你可 以使用 [Shift]+[Page Up] 来往前翻页,也能够使用 [Shift]+[Page Down] 来往后翻页!
4.2.4 错误讯息的察看
[dmtsai@study ~]$ DATE
bash: DATE: command not found... # 这里显示错误的讯息
Similar command is: 'date' # 这里竟然给你一个可能的解决方案耶!
4.3 Linux系统的线上求助man page与info page
不输入任何字仅按下两次 [tab] 按钮来显示所有指令
4.3.1 指令的 --help 求助说明
基本上,如果是指令,那么通过这个简单的 --help 就可以很快速的取得你所需要的选项、参 数的说明了
虽然 --help 已经相当好用,不过,通常 --help 用在协助你查询“你 曾经用过的指令所具备的选项与参数”而已, 如果你要使用的是从来没有用过得指令,或者是 你要查询的根本就不是指令,而是文件的“格式”时,那就得要通过 man page
4.3.2 man page
man是manual(操作说明)的简写
找男人(man)
man date
可以看到的是:“DATE(1)”,常见的几个数字的意义是这样的:
代号 | 代表内容 |
---|---|
1 | 使用者在shell环境中可以操作的指令或可执行文件 |
2 | 系统核心可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为C的函数库(libc) |
4 | 设备文件的说明,通常在/dev下的文件 |
5 | 配置文件或者是某些文件的格式 |
6 | 游戏(games) |
7 | 惯例与协定等,例如Linux文件系统、网络协定、ASCII code等等的说明 |
8 | 系统管理员可用的管理指令 |
9 | 跟kernel有关的文件 |
man null # 原来null竟然是一个“设备文件”
man page大致分 成下面这几个部分:
代号 | 内容说明 |
---|---|
NAME | 简短的指令、数据名称说明 |
SYNOPSIS | 简短的指令下达语法(syntax)简介 |
DESCRIPTION | 较为完整的说明,这部分最好仔细看看! |
OPTIONS | 针对 SYNOPSIS 部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中下达的 指令 |
FILES | 这个程序或数据所使用或参考或链接到的某些文件 |
SEE ALSO | 可以参考的,跟这个指令或数据有相关的其他说明! |
EXAMPLE | 一些可以参考的范例 |
有时候除了这些外,还可能会看到Authors与Copyright等,不过也有很多时候仅有NAME与 DESCRIPTION等部分
些在man page常用的按键:
按键 | 进行工作 |
---|---|
空白键 | 向下翻一页 |
[Page Down] | 向下翻一页 |
[Page Up] | 向上翻一页 |
[Home] | 去到第一页 |
[End] | 去到最后一页 |
/string | 向“下”搜寻 string 这个字串,如果要搜寻 vbird 的话,就输入 /vbird |
?string | 向“上”搜寻 string 这个字串 |
n, N | 利用 / 或 ? 来搜寻字串时,可以用 n 来继续下一个搜寻 (不论是 / 或 ?) , 可以利用 N 来进行“反向”搜寻。举例来说,我以 /vbird 搜寻 vbird 字串, 那么 可以 n 继续往下查询,用 N 往上查询。若以 ?vbird 向上查询 vbird 字串, 那 我可以用 n 继续“向上”查询,用 N 反向查询。 |
q | 结束这次的 man page |
man page的数据 放在哪里呢?不同的distribution通常可能有点差异性,不过,通常是放 在/usr/share/man这个目录里头,然而,我们可以通过修改他的man page搜寻路径来改善这个目录的问题!修改/etc/man_db.conf (有的版本为man.conf或manpath.conf或man.config 等)即可
更多的关于man的讯息你可以使用“ man man ”来查询
搜寻特定指令/文件的man page说明文档
查出来,系统中还有哪些跟“man”这个指令有关的说明文档
man -f man
找出系统的说明文档中,只要有man这个关键字就将该说明列出来
man -k man
这两个指令是man的简略写法:
whatis [指令或者是数据] # 相当于 man -f [指令或者是数据]
apropos [指令或者是数据] # 相当于 man -k [指令或者是数据]
而要注意的是,这两个特殊指令要能使用,必须要有创建 whatis 数据库才行!这个数据库的 创建需要以 root 的身份下达如下的指令:
mandb # 旧版的 Linux 这个指令是使用 makewhatis
4.3.3 info page
info与man的用途其实差不多,都是用来查询指令的用法或者是文件的格式。但是与 man page一口气输出一堆信息不同的是,info page则是将文件数据拆成一个一个的段落,每 个段落用自己的页面来撰写, 并且在各个页面中还有类似网页的“超链接”来跳到各不同的页 面中,每个独立的页面也被称为一个节点(node)。 所以,你可以将info page想成是文字模 式的网页显示数据啦!
[dmtsai@study ~]$ info info
File: info.info, Node: Top, Next: Getting Started, Up: (dir)
-
File:代表这个info page的数据是来自info.info文件所提供的;
-
Node:代表目前的这个页面是属于Top节点。 意思是info.info内含有很多信息,而Top仅是info.info文件内的一个节点内容而已;
-
Next:下一个节点的名称为Getting Started,你也可以按“N”到下个节点去;
-
Up:回到上一层的节点总揽画面,你也可以按下“U”回到上一层;
-
Prev:前一个节点。但由于Top是info.info的第一个节点,所以上面没有前一个节点的信息。
按键 | 进行工作 |
---|---|
空白键 | 向下翻一页 |
[Page Down] | 向下翻一页 |
[Page Up] | 向上翻一页 |
[tab] | 在 node 之间移动,有 node 的地方,通常会以 * 显示。 |
[Enter] | 当光标在 node 上面时,按下 Enter 可以进入该 node 。 |
b | 移动光标到该 info 画面当中的第一个 node 处 |
e | 移动光标到该 info 画面当中的最后一个 node 处 |
n | 前往下一个 node 处 |
p | 前往上一个 node 处 |
u | 向上移动一层 |
s(/) | 在 info page 当中进行搜寻 |
h, ? | 显示求助菜单 |
q | 结束这次的 info page |
查询的指令说明要具有 info page功能的话,得用info page的格式来写成线上求助文件才行!我们CentOS 7将info page的文件放置到/usr/share/info/目录中!至于非以info page格式写成的说明文档(就是man page),虽然也能够使用info来显示,不过其结果就会跟man相同。例如 info man
4.3.4 其他有用的文件(documents)
/usr/share/doc
目录存放说明文档
/usr/share/doc 这个目录下的数据主要是以套件(packages)为主的, 例如 nano 这个软件的相关信息在 /usr/share/doc/nano-xxx(那个xxx表示版本的意思!)
-
在终端机模式中,如果你知道某个指令,但却忘记了相关选项与参数,请先善用 --help的功能来查询相关信息;
-
当有任何你不知道的指令或文件格式这种玩意儿,但是你想要了解他,请赶快使用man或者是info来查询!
-
而如果你想要架设一些其他的服务,或想要利用一整组软件来达成某项功能时,请赶快到/usr/share/doc 下面查一查有没有该服务的说明文档喔!
4.4 超简单文书编辑器: nano
4.5 正确的关机方法
最大的问题是,若不正常关机,则可能造成文件系统的毁损 (因为来不及将数据回写 到文件中,所以有些服务的文件会有问题!)。所以正常情况下,要关机时需要注意下面几 件事:
-
观察系统的使用状态
-
who :看目前有谁在线上
-
netstat -a :看网络的连线状态
-
ps -aux :看后台执行的程序
-
-
通知线上使用者关机的时刻
- shutdown
-
正确的关机指令使用
几个与关机/重新开机相关的指令
-
将数据同步写入硬盘中的指令: sync
-
惯用的关机指令: shutdown
-
重新开机,关机: reboot, halt, poweroff
由于Linux系统的关机/重新开机是很重大的系统运行,因此只有root才能够进行例如 shutdown, reboot等指令。 不过在某些distributions当中,例如我们这里谈到的CentOS系统, 他允许你在本机前的tty1~tty7当中(无论是文字界面或图形界面), 可以用一般帐号来关机 或重新开机!
数据同步写入磁盘: sync
由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入/ 读出,系统的性能就不会太好。 因此在Linux系统中,为了加快数据的读取速度,所以在默认的情况中, 某些已经载入内存中 的数据将不会直接被写回硬盘,而是先暂存在内存当中
事实上sync也可以被一般帐号使用喔!只不过一般帐号使用者所更新的硬盘数据就仅有 自己的数据,不像root可以更新整个系统中的数据了
惯用的关机指令: shutdown
由于Linux的关机是那么重要的工作,因此除了你是在主机前面以实体终端机 (tty1~tty7) 来 登陆系统时, 不论用什么身份都能够关机之外,若你是使用远端管理工具(如通过pietty使用 ssh服务来从其他计算机登陆主机), 那关机就只有root有权力而已喔!
shutdown可以达成如 下的工作:
-
可以自由选择关机模式:是要关机或重新开机均可;
-
可以设置关机时间
-
可以自订关机讯息
-
可以仅发出警告讯息
[root@study ~]# /sbin/shutdown [-krhc] [时间] [警告讯息]
选项与参数:
-k : 不要真的关机,只是发送警告讯息出去!
-r : 在将系统的服务停掉之后就重新开机(常用)
-h : 将系统的服务停掉后,立即关机。 (常用)
-c : 取消已经在进行的 shutdown 指令内容。
时间 : 指定系统关机的时间!时间的范例下面会说明。若没有这个项目,则默认 1 分钟后自动进行。
范例:
[root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
在执行 shutdown 之后,系统告诉大家,这部机器会在十分钟后关机!并且会将讯息显示在目 前登陆者的屏幕前方! 你可以输入“ shutdown -c ”来取消这次的关机指令。而如果你什么参数 都没有加,单纯执行 shutdown 之后, 系统默认会在 1 分钟后进行“关机”的动作
[root@study ~]# shutdown -h now
立刻关机,其中 now 相当于时间为 0 的状态
[root@study ~]# shutdown -h 20:25
系统在今天的 20:25 分会关机,若在21:25才下达此指令,则隔天才关机
[root@study ~]# shutdown -h +10
系统再过十分钟后自动关机
[root@study ~]# shutdown -r now
系统立刻重新开机
[root@study ~]# shutdown -r +30 'The system will reboot'
再过三十分钟系统会重新开机,并显示后面的讯息给所有在线上的使用者
[root@study ~]# shutdown -k now 'This system will reboot'
仅发出警告信件的参数!系统并不会关机啦!吓唬人!
重新开机,关机: reboot, halt, poweroff
在默认的情况下, 这几个指令都会完成一样的工作!(全部的动作都是去调用 systemctl 这个重要的管理命 令!) 所以,你只要记得其中一个就好了
实际使用管理工具 systemctl 关机
目前系统中所有服务的管理是使用哪个指令呢?那就是 systemctl 啦