一、前言
悟已往之不谏,知来者之可追。实迷途其未远,觉今是而昨非。舟遥遥以轻飏,风飘飘而吹衣。问征夫以前路,恨晨光之熹微。
第一版我已经全部放到我的精选里了,大家可以点开我的头像主页,选择精选观看,本系列依照《Linux就该这么学》第二版随书学习练习操作,将一些课本上不顺畅的地方,全部以最简方式免费开源展示给大家,资源大家可以自行百度,学习起来我们既要多巴胺也要内啡肽。
这人啊,熬一天不累,熬十天就累了,小心一年不难,小心一辈子就难了,你任何的一个行为表态都会有很深远的影响,上班的几十年,大多数人走到一个位置,一个瓶颈也是如履薄冰,很难再有提升,如何突破呢,需要思考,需要学习,当然不是学linux,是学做人,学做事,学做没人敢做的事,有的事情,不上称没四两重,上了称一千斤都打不住,不要当显眼包,有了问题要顶住,运维就是这样一个职务,送上天王的一首《超人不会飞-周杰伦》保持谦逊,保持理智,随时找到人生的意义。
9.1 配置网卡服务
配置网卡的服务之前讲过了,但是没有讲过通过nmtui进行配置,今天我们来学习一下
9.1.1 配置网卡参数
使用nmtui命令来配置网络
[root@localhost ~]# nmtui
选中配置网卡按钮并按下回车键
选中要配置的网卡名称,然后按下编辑按钮
常见问题是没有激活网卡,网卡配置文件中的ONBOOT参数修改成yes,这样在系统重启后网卡就被激活,手动重启相应的服务,之后就可以看到网络畅通
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=a3e2d19b-0640-429b-8be8-6f4586ea29b1
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.227.10
NETMASK=255.255.255.0
GATEWAY=192.168.227.2
DNS1=192.168.227.1
DNS2=8.8.8.8
PREFIX=24
ZONE=public
重启网卡
[root@localhost ~]# nmcli connection reload ens160
[root@localhost ~]# nmcli connection up ens160
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
9.1.2 创建网络会话
HEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理NetworkManager服务程序。
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 a3e2d19b-0640-429b-8be8-6f4586ea29b1 ethernet ens160
virbr0 e826a88f-50b2-4b11-9a9f-c2dcaed3e949 bridge virbr0
[root@localhost ~]# nmcli connection show ens160
connection.id: ens160
connection.uuid: a3e2d19b-0640-429b-8be8-6f4586ea29b1
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens160
使用nmcli命令并按照“connection add con-name type ifname
”的格式来创建网络会话。可以实现公司网络和家庭网络自由切换,使用con-name参数指定公司所使用的网络会话名称company,然后依次用ifname参数指定本机的网卡名称,用autoconnect no参数将网络会话设置为默认不被自动激活,以及用ip4及gw4参数手动指定网络的IP地址:
[root@localhost ~]# nmcli connection add con-name company ifname ens160 autoconnect no type ethernet ip4 192.168.227.10/24 gw4 192.168.227.2
Connection 'company' (6358932d-c4cc-4b08-9a35-de9cea662065) successfully added.
使用con-name参数指定家庭所使用的网络会话名称house。因为要从外部DHCP服务器自动获得IP地址,所以这里不需要进行手动指定。
[root@localhost ~]# nmcli connection add con-name house type ethernet ifname ens160
Connection 'house' (244e00ed-1631-4029-9da0-b1cd2e044352) successfully added.
在成功创建网络会话后,可以使用nmcli命令查看创建的所有网络会话:
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 a3e2d19b-0640-429b-8be8-6f4586ea29b1 ethernet ens160
virbr0 08428983-ade7-4567-b664-0e8ec4b89fd1 bridge virbr0
company 6358932d-c4cc-4b08-9a35-de9cea662065 ethernet --
house 244e00ed-1631-4029-9da0-b1cd2e044352 ethernet --
在成功创建网络会话后,可以使用nmcli命令查看创建的所有网络会话(把虚拟机系统的网卡(网络适配器)切换成NAT模式,重启虚拟机):
重启后再试,使用house会话:
使用company会话:
切换方式可以使用命令nmcli connection up house
或者右上角选择切换:
后续不需要网络会话时,直接用delete命令就能删除:
[root@localhost ~]# nmcli connection delete house
Connection 'house' (244e00ed-1631-4029-9da0-b1cd2e044352) successfully deleted.
9.1.3 绑定两块网卡
生产环境必须提供7×24小时的网络传输服务。借助于网卡绑定技术,不仅能够提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。
在虚拟机系统中再添加一块网卡设备,请确保两块网卡都处在同一种网络连接模式中
处于相同模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法互相传送数据。
1.创建出一个bond网卡
使用如下命令创建一个bond网卡,命令与参数的意思是创建一个类型为bond(绑定)、名称为bond0、网卡名为bond0的绑定设备,绑定模式为balance-rr:
[root@localhost network-scripts]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"
Connection 'bond0' (433b5ce0-0cd3-44b2-9cd5-611d667cd7c9) successfully added.
其中rr是round-robin的缩写,全称为轮循模式。round-robin的特点是会根据设备顺序依次传输数据包,提供负载均衡的效果,让带宽的性能更好一些;而且一旦某个网卡发生故障,会马上切换到另外一台网卡设备上,保证网络传输不被中断。
2.向bond0添加从属网卡
[root@localhost ~]# ifconfig
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 48 bytes 4160 (4.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 48 bytes 4160 (4.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099 mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:74:ba:a6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
此时我们重启之后发现网卡ip没了,这不要紧,我们继续查看一下相关网卡信息即可
[root@localhost ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens160: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:ca:51:26 brd ff:ff:ff:ff:ff:ff
3: ens224: mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:ca:51:30 brd ff:ff:ff:ff:ff:ff
ifname参数后面接的是两块网卡的名称。大家一定要以真实的网卡名称为准
[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens160 master bond0
Connection 'bond0-port1' (d9ff2f24-31c4-4750-b554-bf813b333af3) successfully added.
[root@localhost ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens224 master bond0
Connection 'bond0-port2' (d68dcfed-6990-47ac-ab83-ac40206123c9) successfully added.
3.配置bond0设备的网卡信息
用nmcli命令依次配置网络的IP地址及子网掩码、网关、DNS、搜索域和手动配置等参数。
[root@localhost ~]# nmcli connection modify bond0 ipv4.addresses 192.168.227.10/24
[root@localhost ~]# nmcli connection modify bond0 ipv4.gateway 192.168.227.1
[root@localhost ~]# nmcli connection modify bond0 ipv4.dns 192.168.227.1
[root@localhost ~]# nmcli connection modify bond0 ipv4.method manual
[root@localhost ~]# nmcli connection up bond0
Error: Connection activation failed: Connection 'bond0' is not available on device bond0 because device is strictly unmanaged
这是没有默认开启,我们查一下是否开启
[root@localhost ~]# nmcli networking
disabled
我们打开一下:
[root@localhost ~]# nmcli networking on
[root@localhost ~]# nmcli connection up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
查看状态:
[root@localhost ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
bond0 bond connected bond0
ens224 ethernet connected bond0-port2
virbr0 bridge unmanaged --
lo loopback unmanaged --
virbr0-nic tun unmanaged --
4.检验成果
当用户接下来访问主机IP地址192.168.227.10时,主机实际上是由两块网卡在共同提供服务。可以在本地主机执行ping 192.168.227.10命令检查网络的连通性。为了检验网卡绑定技术的自动备援功能,可以突然在虚拟机硬件配置中随机移除一块网卡设备,仅剩一块的时候,顺利被切换过去了,完全没受影响
9.2 远程控制服务
9.2.1 配置sshd服务
SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选,使用SSH协议来远程管理Linux系统,则需要配置部署sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:
基于密码的验证—用账户和密码来验证登录;
基于密钥的验证—需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。
sshd服务配置文件中包含参数及作用
参数 | 作用 |
Port 22 | 默认的sshd服务端口 |
ListenAddress 0.0.0.0 | 设定sshd服务器监听的IP地址 |
Protocol 2 | SSH协议的版本号 |
HostKey /tc/ssh/ssh_host_key | SSH协议版本为1时,DES私钥存放的位置 |
HostKey /etc/ssh/ssh_host_rsa_key | SSH协议版本为2时,RSA私钥存放的位置 |
HostKey /etc/ssh/ssh_host_dsa_key | SSH协议版本为2时,DSA私钥存放的位置 |
PermitRootLogin yes | 设定是否允许root管理员直接登录 |
StrictModes yes | 当远程用户的私钥改变时直接拒绝连接 |
MaxAuthTries 6 | 最大密码尝试次数 |
MaxSessions 10 | 最大终端数 |
PasswordAuthentication yes | 是否允许密码验证 |
PermitEmptyPasswords no | 是否允许空密码登录(很不安全) |
使用两台虚拟机,一台充当服务器,另外一台充当客户端
sshd服务实验机器简介
主机地址 | 操作系统 | 作用 |
192.168.227.10 | Linux | 服务器 |
192.168.227.20 | Linux | 客户端 |
20ip地址不会配的可以看我之前的文章(网卡配置)我这把网卡配置文件内容展示一下(别全复制,重点内容我加粗了):
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=
static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
UUID=bc55b1a9-27b3-4c4a-94c2-8f2978e87ce1
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.227.20
NETMASK=255.255.255.0
GATEWAY=192.168.227.2
DNS1=192.168.227.1
DNS2=8.8.8.8
重启一下reboot
[root@localhost ~]# ifconfig
ens160: flags=4163 mtu 1500
inet 192.168.227.20 netmask 255.255.255.0 broadcast 192.168.227.255
我们可以通过ssh在客户端连到服务器
[root@localhost ~]# ssh 192.168.227.10
The authenticity of host '192.168.227.10 (192.168.227.10)' can't be established.
ECDSA key fingerprint is SHA256:Z1jN2qvmhrAMCwTTpLZhhifAZnZskoac+X849t7g7YI.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
使用Vim文本编辑器打开服务器上的sshd服务主配置文件,然后把第43行#PermitRootLogin yes参数前的井号(#)去掉,并把参数值yes改成no,这样就不再允许root管理员远程登录了
[root@localhost ~]# vim /etc/ssh/sshd_config
42 #LoginGraceTime 2m
43 PermitRootLogin no
44 #StrictModes yes
手动重启并开机自启动
[root@localhost ~]# systemctl restart sshd
[root@localhost ~]# systemctl enable sshd
再次尝试通过root身份访问服务器
[root@localhost ~]#
ssh 192.168.227.10
发现无法连接
Warning: Permanently added '192.168.227.10' (ECDSA) to the list of known hosts.
root@192.168.227.10: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
之后我们再恢复回来,继续其他实验
ssh关于xshell的连接这一部分我就不再多啰嗦了,直接上图,图里的指向是新建ssh窗口,相关22端口,相关ip地址,相关界面展示。
9.2.2 安全密钥验证
加密是对信息进行编码和解码的技术,它通过一定的算法(密钥)将原本能被直接阅读的明文信息转换成密文形式。密钥即是密文的钥匙,有私钥和公钥之分
第1步:在客户端主机中生成“密钥对”,记住是客户端(20)。
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 按回车键或设置密钥的存储路径
Enter passphrase (empty for no passphrase): 直接按回车键或设置密钥的密码
Enter same passphrase again: 再次按回车键或设置密钥的密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:7h3hLU0UHcTeJPCZFeMuQWTzXUOagynnkAKvopr5Jn4 root@localhost.localdomain
The key's randomart image is:
+---[RSA 3072]----+
| . +X+*+|
| o . =oX+*|
| o + +.*+*.|
| . . =. = .|
| . . S .... . |
| . . . . = . |
| . . + o |
|oo.E . . o |
|==o . . |
+----[SHA256]-----+
第2步:把客户端主机中生成的公钥文件传送至远程服务器。
[root@localhost ~]# ssh-copy-id 192.168.227.10
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.227.10: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
上述是我的误区,因为我把服务器的密码登录给关闭了,所以导致第一次连接没达成,所以我得密钥也没传过去,这时候我们需要把服务端的vim /etc/ssh/sshd_config 中间的PasswordAuthentication no变更成yes
[root@localhost ~]# ssh-copy-id root@192.168.227.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.227.10's password: 输入密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.227.10'"
and check to make sure that only the key(s) you wanted were added.
第3步:对服务器进行设置,使其只允许密钥验证,拒绝传统的密码验证方式。记得在修改配置文件后保存并重启sshd服务程序,再改成no
[root@localhost ~]# vim /etc/ssh/sshd_config
67 # To disable tunneled clear text passwords, change to no here!
68 #PasswordAuthentication yes
69 #PermitEmptyPasswords no
70 PasswordAuthentication no
[root@localhost ~]# systemctl restart sshd
第4步:客户端尝试登录到服务器,此时无须输入密码也可成功登录
[root@localhost ~]# ssh root@192.168.227.10
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Mon Dec 11 19:53:29 2023 from 192.168.227.20
[root@localhost ~]# ifconfig
bond0: flags=5187 mtu 1500
inet 192.168.227.10 netmask 255.255.255.0 broadcast 192.168.227.255
用户没有密钥信息,即便有密码也会被拒绝,系统甚至不会给用户输入密码的机会
最后我们再改回去避免以后有问题
[root@localhost ~]# vim /etc/ssh/sshd_config
67 # To disable tunneled clear text passwords, change to no here!
68 #PasswordAuthentication yes
69 #PermitEmptyPasswords no
70 PasswordAuthentication yes
[root@localhost ~]# systemctl restart sshd
9.2.3 远程传输命令
scp是一个基于SSH协议在网络之间进行安全传输的命令,其格式为“scp [参数]本地文件 远程账户@远程IP地址:远程目录”scp不仅能够通过网络传送数据,而且所有的数据都将进行加密处理。
scp命令中可用参数及作用
参数 | 作用 |
-v | 显示详细的连接进度 |
-P | 指定远程主机的sshd端口号 |
-r | 用于传送文件夹 |
-6 | 使用IPv6协议 |
使用scp命令把文件从本地复制到远程主机时,首先需要以绝对路径的形式写清本地文件的存放位置,添加参数-r进行递归操作。然后写上要传送到的远程主机的IP地址,远程服务器便会要求进行身份验证
[root@localhost ~]# echo "" > test
[root@localhost ~]# ll
-rw-r--r--. 1 root root 1 Dec 11 21:40 test
[root@localhost ~]# scp /root/test 192.168.227.20:/home
root@192.168.227.20's password:
test 100% 1 0.8KB/s 00:00
使用scp命令把远程服务器上的文件下载到本地主机,其命令格式为“scp [参数]远程用户@远程IP地址:远程文件 本地目录”。这样就无须先登录远程主机再进行文件传送
[root@localhost ~]# scp 192.168.227.20:/etc/redhat-release /root
root@192.168.227.20's password:
redhat-release 100% 30 1.3KB/s 00:00
[root@localhost ~]# cat redhat-release
CentOS Linux release 8.5.2111
9.3 不间断会话服务
终端复用器,简称为Tmux 是一款能够实现多窗口远程控制的开源服务程序。简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用Tmux服务程序同时在多个远程会话中自由切换,能够实现如下功能。
会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
在RHEL 8系统中,默认没有安装Tmux服务程序,因此需要配置软件仓库来安装
[root@localhost ~]# dnf install tmux -y
9.3.1 管理远程会话
直接敲击tmux命令进入会话窗口
会话窗口的底部出现了一个绿色的状态栏,里面分别显示的是会话编号、名称、主机名及系统时间
退出会话窗口的命令是exit,敲击后即可返回到正常的终端界面
会话窗口的编号是从0开始自动排序(即0、1、2、3、……)接下来创建一个指定名称为backup的会话窗口
[root@localhost ~]# tmux new -s backup
突然要去忙其他事情,但会话窗口中执行的进程还不能被中断,此时便可以用detach参数将会话隐藏到后台
[root@localhost ~]# tmux detach
[detached (from session backup)]
退回到主界面,但后台一直在,如果我们想查看可以用ls,想恢复回去可以用attach -t
[root@localhost ~]# tmux ls
backup: 1 windows (created Mon Dec 11 22:04:03 2023) [170x54]
[root@localhost ~]# tmux attach -t backup
不再需要使用这个Tmux会话了,也不用先在tmux命令后面添加attach,再执行exit命令退出
[root@localhost ~]# exit
[exited]
在日常的生产环境中,其实并不是必须先创建会话,然后再开始工作。可以直接使用tmux命令执行要运行的指令,这样命令中的一切操作都会被记录下来,当命令执行结束后,后台会话也会自动结束。
[root@localhost ~]# tmux new "vim test1"
[exited]
9.3.2 管理多窗格
在实际工作中,一个Shell终端窗口总是不够用,这怎么办呢?Tmux服务有个多窗格功能,能够把一个终端界面按照上下或左右进行切割,从而使得能同时做多件事情,而且之间互不打扰
先创建一个会话。使用“tmux split-window
”命令可以创建上下切割的多窗格终端界面,使用“tmux split-window -h
”命令可以创建左右切割的多窗格终端界面
同时按下“Ctrl + B +方向键”调整窗格的尺寸,按住前俩键位,有节奏的按方向键可以一直调整
Tmux不间断会话多窗格切换命令
命令 | 作用 |
tmux select-pane -U | 切换至上方的窗格 |
tmux select-pane -D | 切换至下方的窗格 |
tmux select-pane -L | 切换至左方的窗格 |
tmux select-pane -R | 切换至右方的窗格 |
Tmux不间断会话多窗格互换命令
命令 | 作用 |
tmux swap-pane -U | 将当前窗格与上方的窗格互换 |
tmux swap-pane -D | 将当前窗格与下方的窗格互换 |
先同时按下Ctrl+B组合键,然后松手后再迅速按下其他后续按键,而不是一起按下,Tmux会话窗格相关的常用快捷键
快捷键 | 作用 |
% | 划分左右两个窗格 |
" | 划分上下两个窗格 |
; | 切换至上一个窗格 |
o | 切换至下一个窗格 |
{ | 将当前窗格与上一个窗格位置互换 |
} | 将当前窗格与下一个窗格位置互换 |
x | 关闭窗格 |
! | 将当前窗格拆分成独立窗口 |
q | 显示窗格编号 |
9.3.3 会话共享功能
要实现会话共享功能,首先使用ssh服务将客户端A远程连接到服务器,随后使用Tmux服务创建一个新的会话窗口,名称为share:
本机先连自己:ssh 192.168.227.10
[root@localhost ~]#
tmux new -s share
客户端20连自己:ssh 192.168.227.10
[root@localhost ~]#
tmux attach-session -t share
会有以下效果,100%同步
9.4 检索日志信息
在RHEL 8系统中,默认的日志服务程序是rsyslog。可以将rsyslog理解成之前的syslogd服务的增强版本,它更加注重日志的安全性和性能指标
常见的日志文件保存路径
文件路径及命令 | 作用 |
/var/log/boot.log | 系统开机自检事件及引导过程等信息 |
/var/log/lastlog | 用户登录成功时间、终端名称及IP地址等信息 |
/var/log/btmp | 记录登录失败的时间、终端名称及IP地址等信息 |
/var/log/messages | 系统及各个服务的运行和报错信息 |
/var/log/secure | 系统安全相关的信息 |
/var/log/wtmp | 系统启动与关机等相关信息 |
日志文件分为下面3种类型
系统日志:主要记录系统的运行情况和内核信息。
用户日志:主要记录用户的访问信息,包含用户名、终端名称、登入及退出时间、来源IP地址和执行过的操作等。
程序日志:稍微大一些的服务一般都会保存一份与其同名的日志文件,里面记录着服务运行过程中各种事件的信息;每个服务程序都有自己独立的日志文件,且格式相差较大。
journalctl命令用于检索和管理系统日志信息,语法格式为“journalctl参数”
journalctl命令中常用按键以及作用
参数 | 作用 |
-k | 内核日志 |
-b | 启动日志 |
-u | 指定服务 |
-n | 指定条数 |
-p | 指定类型 |
-f | 实时刷新(追踪日志) |
--since | 指定时间 |
--disk-usage | 占用空间 |
查看系统中最后5条日志信息:
[root@localhost ~]# journalctl -n 5
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --
Dec 11 22:42:47 localhost.localdomain sshd[7163]: Disconnected from user root 192.168.227.20 port 45568
Dec 11 22:42:47 localhost.localdomain sshd[7160]: pam_unix(sshd:session): session closed for user root
Dec 11 22:42:47 localhost.localdomain systemd[1]: session-8.scope: Succeeded.
Dec 11 22:42:47 localhost.localdomain systemd-logind[1034]: Session 8 logged out. Waiting for processes to exit.
Dec 11 22:42:47 localhost.localdomain systemd-logind[1034]: Removed session 8.
使用-f参数实时刷新日志的最新内容:
[root@localhost ~]# journalctl -f
-- Logs begin at Mon 2023-12-11 18:18:06 PST. --
Dec 11 22:34:45 localhost.localdomain sshd[7203]: Accepted password for root from 192.168.227.10 port 51218 ssh2
Dec 11 22:34:45 localhost.localdomain systemd-logind[1034]: New session 9 of user root.
Dec 11 22:34:45 localhost.localdomain systemd[1]: Started Session 9 of user root.
Dec 11 22:34:45 localhost.localdomain sshd[7203]: pam_unix(sshd:session): session opened for user root by (uid=0)
Dec 11 22:42:47 localhost.localdomain sshd[7163]: Received disconnect from 192.168.227.20 port 45568:11: disconnected by user
Dec 11 22:42:47 localhost.localdomain sshd[7163]: Disconnected from user root 192.168.227.20 port 45568
在rsyslog服务程序中,日志根据重要程度被分为9个等级
日志信息登记分类
日志等级 | 说明介绍 |
emerg | 系统出现严重故障,内核崩溃等情况 |
alert | 应立即修复的故障,数据库损坏等情况 |
crit | 危险较高的故障,硬盘损坏导致程序运行失败的情况 |
err | 一般危险的故障,某个服务启动或运行失败的情况 |
warning | 警告信息,某个服务参数或功能错误的情况 |
notice | 一般无危险的故障,只是需要处理的情况 |
info | 通用性消息,给用户提示一些有用信息 |
debug | 调试程序所产生的信息 |
none | 没有优先级,不做日志记录 |
看系统中较高级别的报错信息,可以在journalctl命令中用-p参数进行指定:
[root@localhost ~]# journalctl -p crit
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --
-- No entries --
用--since参数按照今日(today)、近N小时(hour)、指定时间范围的格式进行检索,找出最近的日志数据
仅查询今日的日志信息:
[root@localhost ~]# journalctl --since today
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --
Dec 11 18:18:06 localhost.localdomain kernel: Linux version 4.18.0-348.7.1.el8_5.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.5.0 20210514 (Red Hat 8.5.0-4>
Dec 11 18:18:06 localhost.localdomain kernel: Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.7.1.el8_5.x86_64 root=UUID=4b849a54-214d-437d-88ab-86d63bd77690 ro>
Dec 11 18:18:06 localhost.localdomain kernel: Disabled fast string operations
Dec 11 18:18:06 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
Dec 11 18:18:06 localhost.localdomain kernel: x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
查询最近1小时的日志信息:
[root@localhost ~]# journalctl --since "-1 hour"
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --
Dec 11 21:48:39 localhost.localdomain NetworkManager[1119]: [1702360119.5087] dhcp4 (ens160): state changed extended -> extended, address=192.168.227.128
Dec 11 21:48:39 localhost.localdomain dbus-daemon[941]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispa>
Dec 11 21:48:39 localhost.localdomain systemd[1]: Starting Network Manager Script Dispatcher Service...
Dec 11 21:48:39 localhost.localdomain dbus-daemon[941]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Dec 11 21:48:39 localhost.localdomain systemd[1]: Started Network Manager Script Dispatcher Service.
查询12点整到14点整的日志信息(年月日用横杠2023-12-01):
[root@localhost ~]# journalctl --since "12:00" --until "14:00"
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:42:47 PST. --
具体某项服务的日志信息,可以使用_SYSTEMD_UNIT参数进行查询,服务名称的后面要有“.service”
[root@localhost ~]# journalctl -u sshd.service
-- Logs begin at Mon 2023-12-11 18:18:06 PST, end at Mon 2023-12-11 22:48:50 PST. --
Dec 11 18:18:36 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
Dec 11 18:18:36 localhost.localdomain sshd[1131]: Server listening on 0.0.0.0 port 22.
Dec 11 18:18:36 localhost.localdomain sshd[1131]: Server listening on :: port 22.
Dec 11 18:18:36 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
二、巩固练习
1.在Linux系统中多种方法可以配置网络参数的命令。
答:配置网络参数可以使用nmtui命令、nmcli命令、nm-connection-editor命令或者直接编辑网络配置文件来实现对网络参数的修改。
2.在RHEL 8系统中使用网络会话技术的目的是什么?
答:使用nmcli命令来管理网络会话的目的是为了快速切换网络参数,以便适应不同的工作场景。
3.请简述网卡绑定技术balaner-rr模式的特点。
答:平时两块网卡均工作,且自动备援,无须交换机设备提供辅助支持。
4.在Linux系统中,当通过修改其配置文件中的参数来配置服务程序时,若想要让新配置的参数生效,还需要执行什么操作?
答:需要重新启动相关的服务程序,或让服务程序重新加载配置文件,或重启系统。
5.sshd服务的密码验证与密钥验证方式,哪个更安全?
答:一般情况下,密钥验证方式更加安全。若用户有更高的安全需求,还可以再对密钥文件进行密码加密,从而实现双重加密。
6. 想要把本地文件/root/out.txt传送到地址为192.168.227.20的远程主机的/home目录下,且本地主机与远程主机均为Linux系统,最为简便的传送方式是什么?
答:执行命令scp /root/out.txt root@192.168.227.20:/home,并在进行密码验证后即可开始传送。
7.Tmux服务程序能够让用户实现远程控制的不间断会话,即便网络发生中断也不丢失对远程主机的会话控制。那么,当想要恢复一个名为linux的会话窗口时,应该怎么做呢?
答:执行命令tmux attach -t linux即可恢复这个会话窗口。
三、跋文
如果想上手操作的同学们可以通过阿里云ecs服务器免费试用参与或低价购买专属于自己的服务器入口如下↓↓↓↓↓
入口一:新老同学免费试用
入口二:上云第一站
入口三:学生版超低价云服务器
入口四:云服务器专享特惠版
入口五:云服务器特惠1.5折起
入口七:阿里云最新活动中心
入口八:中小企业权益满减礼包
说明:最后的链接只是想方便大家免费试用产品和找到最佳优惠政策。
学习是一件需要投入的事情,无论是精力、金钱、时间,每天花费1小时,坚持一年,你也能成为行业里的大牛。