Linux就该这么学(一)
基于红帽 RHEL 8 系统编写,且内容通用于 CentOS、Fedora 等系统
软件资源可通过网络下载
[root@linuxprobe~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
一、如何查询服务器的系统和版本 在etc目录下放置了该系统的配置文件
例如:CentOS系统

或者Red Hat 系统

二、重置root密码
要先确定是否为 RHEL 8 系统(第一点已经说明)。如果是,然后再进行下面的操作
重启Linux 系统主机并出现引导界面时,按下键盘上的 e 键进入内核编辑界面

在 linux 参数这行的最后面追加 rd.break 参数,然后按下 Ctrl + X 组合键运行修改过的内核程序

大约 30 秒过后,系统会进入紧急救援模式,如下:

然后依次输入以下命令,再连续按下两次 Ctrl + D 组合键盘来退出并重启。等待系统再次重启完毕后便可以使用新密码登录 Linux 系统。这一系列命令的执行效果如图
mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel

在输入命令前就已经存在的“[root@linuxprobe~]#”这部分内容是
终端提示符,它用于向用户展示一些基本的信息—当前登录用户名为 root,简要的主机名
是 linuxprobe,所在目录是~(这里的~是指用户家目录,第 6 章会讲解),#表示管理员身份
(如果是$则表示普通用户,相应的权限也会小一些)
三、[root@linuxprobe~]#
这部分内容是终端提示符,它用于向用户展示一些基本的信息
当前登录用户名为 root
简要的主机名是 linuxprobe
所在目录是~(这里的~是指用户家目录 /root)
#表示管理员身份(如果是$则表示普通用户,相应的权限也会小一些)。
四、额外的快捷键、组合键
Tab键:在 Bash 解释器的快捷键中,Tab 键绝对是使用频率最高的,它能够实现对命令、参数或文件的内容补全。例如,如果想执行 reboot 重启命令,但一时想不起来该命令的完整拼写,则可以这样输入:

在上面的实验中,先输入了两个字母 re,随后敲击了两下 Tab 键。由于以 re 开头的命令不止一个,所以系统将所有以 re 开头的命令全部显示了出来。而第二次输入 reb 后再敲击 Tab键,由于此时没有以 reb 开头的其他命令,所以系统就显示出了完整的 reboot 重启命令。
对于文件名也是一样的操作—只需要输入前面的一部分名称,且不存在多个以这部分名称开头的文件名,系统就会自动补全。不仅速度快,而且避免了手动输入有可能出错的问题。
Ctrl + C 组合键 :当同时按下键盘上的 Ctrl 和字母 C 的时候,意味着终止当前进程的运行。假如执行了一个错误命令,或者是执行某个命令后迟迟无法结束,这时就可以冷静地按下 Ctrl+C 组合键,命令行终端的控制权会立刻回到我们手中。
Ctrl + D 组合键 :当同时按下键盘上的 Ctrl 和字母 D 的时候,表示键盘输入结束
Ctrl + l 组合键 :当同时按下键盘上行的 Ctrl 和字母 l 的时候,会清空当前终端中已有的内容(相当于清屏操作 clear)
五、日期
date命令
date 命令用于显示或设置系统的时间与日期,语法格式为 date [+指定的格式]。

按照默认格式查看当前系统时间的 date 命令如下所示:
[root@linuxprobe linuxprobe]# date
Mon Feb 13 15:21:16 UTC 2023
按照“年-月-日 小时:分钟:秒”的格式查看当前系统时间的date 命令如下所示:
[root@linuxprobe linuxprobe]# date "+%Y-%m-%d %H:%M:%S"
2023-02-13 15:21:56
将系统的当前时间设置为 2020 年 11 月 1 日 8 点 30 分的 date 命令如下所示:
[root@linuxprobe linuxprobe]# date -s "20201101 8:30:00"
Sun Nov 1 08:30:00 UTC 2020
date 命令中的参数%j 可用来查看今天是当年中的第几天。这个参数能够很好地区分备份时间的早晚,即数字越大,越靠近当前时间。该参数的使用方式以及显示结果如下所示:
[root@linuxprobe linuxprobe]# date "+%j"
044
timedatectl命令
timedatectl 命令用于设置系统的时间,英文全称为“time date control”,语法格式为“timedatectl [参数]”。
[root@linuxprobe linuxprobe]# timedatectlLocal time: Mon 2023-02-13 15:28:00 UTCUniversal time: Mon 2023-02-13 15:28:00 UTCRTC time: Mon 2023-02-13 15:28:45Time zone: UTC (UTC, +0000)
System clock synchronized: yesNTP service: inactiveRTC in local TZ: no
如果您查到的时区不是上海(Asia/Shanghai),可以手动进行设置:
[root@linuxprobe linuxprobe]# timedatectl set-timezone Asia/Shanghai
如果时间还是不正确,可再手动修改系统日期:
[root@linuxprobe linuxprobe]# timedatectl set-time 2021-05-18
而如果想修改时间的话,也很简单:
[root@linuxprobe~]# timedatectl set-time 9:30
六、重启或关闭系统
reboot 命令用于重启系统,输入该命令后按回车键执行即可。
poweroff 命令用于关闭系统,输入该命令后按回车键执行即可。
由于重启或关闭计算机这种操作会涉及硬件资源的管理权限,因此最好是以 root 管理员的身份来重启,普通用户在执行该命令时可能会被拒绝。
七、wget 下载网络文件
尝试使用 wget 命令从本书的配套站点中下载本书最新的 PDF 格式的电子文档。执行该命令后的下载效果如下:
[root@VM-0-8-centos ~]# wget https://www.linuxprobe.com/docs/LinuxProbe.pdf
--2023-02-13 16:20:11-- https://www.linuxprobe.com/docs/LinuxProbe.pdf
Resolving www.linuxprobe.com (www.linuxprobe.com)... 117.27.154.168
Connecting to www.linuxprobe.com (www.linuxprobe.com)|117.27.154.168|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23335661 (22M) [application/pdf]
Saving to: ‘LinuxProbe.pdf.1’100%[==============================================================================>] 23,335,661 24.6MB/s in 0.9s 2023-02-13 16:20:12 (24.6 MB/s) - ‘LinuxProbe.pdf.1’ saved [23335661/23335661]
在该路径下会多一个 LinuxProbe.pdf 文件
接下来,使用 wget 命令递归下载 www.linuxprobe.com 网站内的所有页面数据以及文件,下载完后会自动保存到当前路径下一个名为 www.linuxprobe.com 的目录中。该命令的执行结果如下:(由于时间长一些,需要等待下载完成)
[root@linuxprobe~]# wget -r -p https://www.linuxprobe.com
--2020-09-28 19:26:12-- https://www.linuxprobe.com/
Resolving www.linuxprobe.com (www.linuxprobe.com)... 221.15.64.1
Connecting to www.linuxprobe.com (www.linuxprobe.com)|221.15.64.1|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
77
Saving to: ‘www.linuxprobe.com/index.html’
………………省略下载过程………………
八、ps命令
ps 命令用于查看系统中的进程状态,英文全称为“processes”,语法格式为“ps [参数]”。

当执行 ps aux 命令后通常会看到如表 2-8 所示的进程状态。下表只是列举了部分输出值,而且正常的输出值中不包括中文注释。

注意:如前面所提到的,在 Linux 系统中的命令参数有长短格式之分,长格式和长格式之间不能合并,长格式和短格式之间也不能合并,但短格式和短格式之间是可以合并的,合并后仅保留一个减号(-)即可。另外 ps 命令可允许参数不加减号(-),因此可直接写成 ps aux 的样子。
九、pstree命令
pstree 命令用于以树状图的形式展示进程之间的关系,英文全称为“process tree”,输入该命令后按回车键执行即可。
[root@linuxprobe ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]├─NetworkManager───2*[{NetworkManager}]├─VGAuthService├─accounts-daemon───2*[{accounts-daemon}]├─atd├─auditd─┬─sedispatch│ └─2*[{auditd}]├─avahi-daemon───avahi-daemon├─boltd───2*[{boltd}]├─colord───2*[{colord}]├─crond├─cupsd├─dbus-daemon───{dbus-daemon}├─dnsmasq───dnsmasq├─firewalld───{firewalld}├─fwupd───4*[{fwupd}]
...........此处省略...........
十、top命令
top 命令用于动态地监视进程活动及系统负载等信息,输入该命令后按回车键执行即可。
前面介绍的命令都是静态地查看系统状态,不能实时滚动最新数据,而 top 命令能够动态地查看系统状态,因此完全可以将它看作是 Linux 中“强化版的 Windows 任务管理器”。top是相当好用的性能分析工具。
top - 10:16:30 up 5 min, 1 user, load average: 0.01, 0.17, 0.11
Tasks: 306 total, 3 running, 303 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.5 us, 0.8 sy, 0.0 ni, 95.8 id, 0.0 wa, 0.8 hi, 0.0 si, 0.0 st
MiB Mem : 1966.1 total, 194.9 free, 1209.8 used, 561.3 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 580.7 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2076 root 20 0 2899908 163600 90592 R 2.5 8.1 0:06.26 gnome-shell 2533 root 20 0 530920 42392 31256 R 0.8 2.1 0:02.01 gnome-terminal- 2715 root 20 0 64012 4900 4024 R 0.8 0.2 0:00.01 top 1 root 20 0 244496 13856 9076 S 0.0 0.7 0:01.41 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kblockd 8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 9 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 10 root 20 0 0 0 0 I 0.0 0.0 0:00.07 rcu_sched 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns 17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 oom_reaper 20 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 writeback
top 命令执行结果的前 5 行为系统整体的统计信息,其所代表的含义如下。
➢ 第 1 行:系统时间、运行时间、登录终端数、系统负载(3 个数值分别为 1 分钟、5分钟、15 分钟内的平均值,数值越小意味着负载越低)。
➢ 第 2 行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
➢ 第 3 行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为 CPU 数据并以百分比格式显示,例如:“99.9 id”意味着有 99.9%的 CPU 处理器资源处于空闲。
➢ 第 4 行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
➢ 第 5 行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
十一、nice命令
nice 命令用于调整进程的优先级,语法格式为“nice 优先级数字 服务名称”
在 top 命令输出的结果中,PR 和 NI 值代表的是进程的优先级,数字越低(取值范围是-20~19),优先级越高。在日常的生产工作中,可以将一些不重要进程的优先级调低,让紧迫的服务更多地利用 CPU 和内存资源,以达到合理分配系统资源的目的。例如将 bash 服务的优先级调整到最高:
[root@linuxprobe ~]# nice -n -20 bash
十二、pidof命令
pidof 命令用于查询某个指定服务进程的 PID 号码值,语法格式为“pidof [参数] 服务名称”。
每个进程的进程号码值(PID)是唯一的,可以用于区分不同的进程。例如,执行如下命令来查询本机上 sshd 服务程序的 PID:
[root@linuxprobe ~]# pidof sshd
1030
十三、kill 和 killall命令
kill 命令用于终止某个指定 PID 值的服务进程,语法格式为“kill [参数] 进程的 PID”。
接下来,使用 kill 命令把上面用 pidof 命令查询到的 PID 所代表的进程终止掉,其命令如下所示。这种操作的效果等同于强制停止 sshd 服务
[root@linuxprobe~]# kill 2156
但有时系统会提示进程无法被终止,此时可以加参数-9,表示最高级别地强制杀死进程:
[root@linuxprobe~]# kill -9 2156
killall 命令用于终止某个指定名称的服务所对应的全部进程,语法格式为“killall [参数] 服务名称”。
通常来讲,复杂软件的服务程序会有多个进程协同为用户提供服务,如果用 kill 命令逐个去结束这些进程会比较麻烦,此时可以使用 killall 命令来批量结束某个服务程序带有的全部进程。
下面以 httpd 服务程序为例,来结束其全部进程。由于 RHEL 8 系统默认没有安装 httpd服务程序,因此大家此时只需看操作过程和输出结果即可,等学习了相关内容之后再来实践。
[root@linuxprobe~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe~]# killall httpd
[root@linuxprobe~]# pidof httpd
[root@linuxprobe~]#
注意:如果在系统终端中执行一个命令后想立即停止它,可以同时按下 Ctrl + C 组合键(生产环境中比较常用的一个组合键),这样将立即终止该命令的进程。或者,如果有些命令在执行时不断地在屏幕上输出信息,影响到后续命令的输入,则可以在执行命令时在末尾添加一个**&**符号,这样命令将进入系统后台来执行
系统状态检测命令
一、ifconfig命令
ifconfig 命令用于获取网卡配置与网络状态等信息,英文全称为“interface config”,语法格式为“ifconfig [参数] [网络设备]”。
使用 ifconfig 命令来查看本机当前的网卡配置与网络状态等信息时,其实主要查看的就是网卡名称、inet 参数后面的 IP 地址、ether 参数后面的网卡物理地址(又称为 MAC 地址),以及 RX、TX 的接收数据包与发送数据包的个数及累计流量(即下面加粗的信息内容)

二、uname命令
uname 命令用于查看系统内核版本与系统架构等信息,英文全称为“unix name”,语法格式为“uname [-a]”。
在使用 uname 命令时,一般要固定搭配上-a 参数来完整地查看当前系统的内核名称、主机名、内核发行版本、节点名、压制时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息:
[root@linuxprobe ~]# uname -a
Linux linuxprobe.com 4.18.0-80.el8.x86_64 #1 SMP Wed Mar 13 12:02:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
顺带一提,如果要查看当前系统版本的详细信息,则需要查看 redhat-release 文件,其命令以及相应的结果如下:
[root@linuxprobe ~]# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.0 (Ootpa)
三、uptime命令
uptime 命令用于查看系统的负载信息,输入该命令后按回车键执行即可。
uptime 命令真的很棒,它可以显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面加粗的信息部分),负载值越低越好:
[root@linuxprobe~]# uptime
22:49:55 up 10 min, 1 users, load average: 0.01, 0.19, 0.18
注意:“负载值越低越好”是对运维人员来讲的,越低表示越安全省心。但是公司购置的硬件设备如果长期处于空闲状态,则明显是种资源浪费,老板也不会开心。所以建议负载值保持在 1 左右,在生产环境中不要超过 5 就好。
四、free命令
free 命令用于显示当前系统中内存的使用量信息,语法格式为“free [-h]”
为了保证 Linux 系统不会因资源耗尽而突然宕机,运维人员需要时刻关注内存的使用量。在使用 free 命令时,可以结合使用-h 参数以更人性化的方式输出当前内存的实时使用量信息。如下 所示为执行 free -h 命令之后的输出信息。需要注意的是,输出信息中的中文注释是作者自行添加的内容,实际输出时没有相应的参数解释
[root@linuxprobe~]# free -h

如果不使用-h(易读模式)查看内存使用量情况,则默认以 KB 为单位。这样一来,服务器如果有几百 GB 的内存,则换算下来就会是一大长串的数字,真不利于阅读。
五、who 和 last 命令
who 命令用于查看当前登入主机的用户终端信息,输入该命令后按回车键执行即可。这 3 个简单的字母可以快速显示出所有正在登录本机的用户名称以及他们正在开启的终端信息;如果有远程用户,还会显示出来访者的 IP 地址。
[root@linuxprobe etc]# who
root tty2 2023-02-16 08:44 (tty2)
下面是腾讯云的查询记录
[root@VM-0-8-centos ~]# who
root pts/0 2023-02-16 09:20 (222.209.244.255)
last 命令用于调取主机的被访记录,输入该命令后按回车键执行即可。
Linux 系统会将每次的登录信息都记录到日志文件中,如果哪天想翻阅了,直接执行这条命令就行
[root@VM-0-8-centos ~]# last
root pts/0 222.209.244.255 Thu Feb 16 09:20 still logged in
root pts/0 222.209.244.255 Wed Feb 15 10:39 - 10:42 (00:02)
root pts/0 171.217.0.247 Mon Feb 13 16:13 - 16:26 (00:13)
root pts/0 171.217.0.247 Mon Feb 13 15:57 - 16:00 (00:02)
root pts/0 222.209.244.255 Fri Feb 10 16:09 - 16:09 (00:00)
root pts/0 171.217.2.83 Wed Feb 8 15:58 - 16:20 (00:22)
root pts/0 171.217.2.83 Wed Feb 8 15:26 - 15:39 (00:12)
root pts/0 171.217.2.83 Wed Feb 8 09:30 - 09:32 (00:02)
root pts/0 222.209.244.255 Tue Feb 7 09:09 - 09:17 (00:07)
root pts/0 222.209.244.255 Tue Feb 7 09:08 - 09:09 (00:00)
root pts/0 222.209.245.0 Mon Feb 6 16:05 - 16:11 (00:05)
root pts/2 60.255.160.194 Thu Feb 2 19:24 - 19:25 (00:00)
root pts/2 60.255.166.85 Sun Jan 29 12:55 - 12:56 (00:00)
六、ping命令
ping 命令用于测试主机之间的网络连通性,语法格式为“ping [参数] 主机地址”。
即便大家没有学习过 Linux 系统,相信也肯定见过别人使用 ping 命令。执行 ping 命令时,系统会使用 ICMP 向远端主机发出要求回应的信息,若连接远端主机的网络没有问题,远端主机会回应该信息。由此可见,ping 命令可用于判断远端主机是否在线并且网络是否正常。ping 命令的常见参数以及作用如下表所示。

[root@linuxprobe~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.155 ms
64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.110 ms
64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.112 ms
64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.209 ms
七、tracepath 命令
tracepath 命令用于显示数据包到达目的主机时途中经过的所有路由信息,(用来追踪并显示报文到达目的主机所经过的路由信息。)语法格式为“tracepath [参数] 域名”。
当两台主机之间无法正常 ping 通时,要考虑两台主机之间是否有错误的路由信息,导致数据被某一台设备错误地丢弃。这时便可以使用 tracepath 命令追踪数据包到达目的主机时途中的所有路由信息,以分析是哪台设备出了问题。下面的情况就很清晰了:
[root@VM-0-8-centos ~]# tracepath www.58.com1?: [LOCALHOST] pmtu 15001: 9.245.222.130 5.088ms 1: 9.245.222.130 1.806ms 2: no reply3: no reply4: 10.200.65.109 21.237ms asymm 9 5: 10.200.7.90 35.930ms asymm 8 6: 9.121.248.139 24.016ms asymm 8 7: no reply8: 9.121.249.171 32.539ms 9: no reply
10: no reply
11: no reply
12: no reply
13: no reply
.......省略..........Too many hops: pmtu 1500Resume: pmtu 1500
八、netstat 命令
netstat 命令用于显示如网络连接、路由表、接口状态等的网络相关信息,全称为“network status”,语法格式为“netstat [参数]”。
只要 netstat 命令使用得当,便可以查看到网络状态的方方面面信息。我们找出一些常用的参数让大家感受一下。netstat 命令的常见参数以及作用如下表所示。

使用 netstat 命令显示网卡列表:
[root@linuxprobe etc]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens160 1500 16 0 0 0 0 0 0 0 BMRU
lo 65536 36 0 0 0 36 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
九、history 命令
history 命令用于显示执行过的命令历史,语法格式为“history [-c]”。
[root@linuxprobe~]# history
1 ifconfig
2 uname -a
3 cat /etc/redhat-release
4 uptime
.......省略.........
历史命令会被保存到用户家目录中的.bash_history 文件中。Linux 系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat 命令查看其文件内容:
[root@linuxprobe~]# cat ~/.bash_history
要清空当前用户在本机上执行的 Linux 命令历史记录信息,可执行如下命令:
[root@linuxprobe~]# history -c
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
