9.1 配置网络服务

9.1.1 配置网络参数

在 4.1.3 中讲解了如何修改网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eno16777736来设置网络参数,其实,用 nmtui 命令也可以配置网络。具体步骤如下:

  1. 在终端输入nmtui
  2. 选中 Edit a connection 并按下回车键
  3. 选中要编辑的网卡名称,然后按下 Edit 按钮
  4. 把网络IPv4 的配置方式改成 Manual
  5. 按下 Show 按钮,显示信息配置框
  6. 在服务器主机的网络配置信息中填写 IP 地址192.168.10.10/24
  7. 单击 OK 按钮保存配置
  8. 单击 Quit 按钮退出
    注意:不要忘记激活网卡!将网卡配置文件中的 ONBOOT 参数修改成 yes,就可以了。
  9. systemctl restart network

9.1.2 创建网络会话

RHEL 和 CentOS 系统默认使用 NetworkManager 来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。

可以使用 nmcli 命令来管理 Network Manager 服务。nmcli 是一款基于命令行的网络配置工具,它可以轻松地查看网络信息或网络状态:

[root@linuxprobe Desktop]# nmcli connection show
NAME         UUID                                  TYPE            DEVICE
eno16777728  252bfc70-d95e-4f75-8741-18e7b98b6e05  802-3-ethernet  eno16777728
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# nmcli connection show eno16777728
connection.id:                          eno16777728
connection.uuid:                        252bfc70-d95e-4f75-8741-18e7b98b6e05
connection.interface-name:              --
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.timestamp:                   1616290007
connection.read-only:                   no
connection.permissions:
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.secondaries:
connection.gateway-ping-timeout:        0
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             00:0C:29:AD:BA:9A
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:
802-3-ethernet.mtu:                     auto
802-3-ethernet.s390-subchannels:
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:
ipv4.method:                            manual
ipv4.dns:                               192.168.114.1
ipv4.dns-search:
ipv4.addresses:                         { ip = 192.168.114.100/24, gw = 192.168.114.1 }
ipv4.routes:
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            auto
ipv6.dns:
ipv6.dns-search:
ipv6.addresses:
ipv6.routes:
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
GENERAL.NAME:                           eno16777728
GENERAL.UUID:                           252bfc70-d95e-4f75-8741-18e7b98b6e05
GENERAL.DEVICES:                        eno16777728
GENERAL.STATE:                          activated
GENERAL.DEFAULT:                        yes
GENERAL.DEFAULT6:                       no
GENERAL.VPN:                            no
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/5
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/0
GENERAL.SPEC-OBJECT:                    --
GENERAL.MASTER-PATH:                    --
IP4.ADDRESS[1]:                         ip = 192.168.114.100/24, gw = 192.168.114.1
IP4.DNS[1]:                             192.168.114.1
IP6.ADDRESS[1]:                         ip = fe80::20c:29ff:fead:ba9a/64, gw = ::
[root@linuxprobe Desktop]#

另外,RHEL7 系统支持网络会话功能,允许用户在多个配置文件中快速切换(类似于firewalld 防火墙服务中的区域技术)。如果我们在公司网络中使用笔记本电脑时需要手动指定网络的IP 地址,回到家中则是使用 DHCP 自动分配 IP 地址。这就需要麻烦地频繁修改 IP 地址,但是使用了网络会话功能后一切就简单多了——只需在不同的使用环境中激活相应的网络会话,就可以实现网络配置信息的自动切换。

可以使用 nmcli 命令并按照 connection add con-name NAME ifname IFNAME autoconnect no type TYPE ip4 IP gw4 GWIP 的格式来创建网络会话。假设将公司网络中的网络会话称之为company,将家庭网络中的网络会话称之为home,现在依次创建各自的网络会话。

使用 con-name 参数指定网络会话名称, ifname 参数指定本机的网卡名称,用 autoconnect no 参数设置该网络会话默认不被自动激活,type 指定网络类型,以及用 ip4gw4 参数手动指定网络的 IP 地址:

[root@linuxprobe Desktop]# nmcli connection add con-name company ifname eno16777728 autoconnect no type ethernet ip4 192.168.114.200/24 gw4 192.168.114.1
Connection 'company' (c1892711-fcb7-4723-b03c-69b33c70ac58) successfully added.
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# nmcli connection add con-name home ifname eno16777728 type ethernet
Connection 'home' (e7867781-20ef-4582-a123-cef233331f31) successfully added.
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# nmcli connection show
NAME         UUID                                  TYPE            DEVICE
home         e7867781-20ef-4582-a123-cef233331f31  802-3-ethernet  --
company      c1892711-fcb7-4723-b03c-69b33c70ac58  802-3-ethernet  --
eno16777728  252bfc70-d95e-4f75-8741-18e7b98b6e05  802-3-ethernet  eno16777728

使用 nmcli 命令配置过的网络会话是永久生效的,这样当我们下班回家后,顺手启用 home 网络会话,网卡就能自动通过DHCP 获取到IP 地址了。

[root@linuxprobe Desktop]# nmcli connection up home
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.114.128  netmask 255.255.255.0  broadcast 192.168.114.255inet6 fe80::20c:29ff:fead:ba9a  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:ad:ba:9a  txqueuelen 1000  (Ethernet)RX packets 1020  bytes 85397 (83.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 935  bytes 91747 (89.5 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 0  (Local Loopback)RX packets 710  bytes 61838 (60.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 710  bytes 61838 (60.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# nmcli connection up company
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
[root@linuxprobe Desktop]#
[root@linuxprobe Desktop]# ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.114.200  netmask 255.255.255.0  broadcast 192.168.114.255inet6 fe80::20c:29ff:fead:ba9a  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:ad:ba:9a  txqueuelen 1000  (Ethernet)RX packets 1020  bytes 85397 (83.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 959  bytes 95359 (93.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 0  (Local Loopback)RX packets 846  bytes 73558 (71.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 846  bytes 73558 (71.8 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@linuxprobe Desktop]#

9.1.3 绑定两块网卡

一般来讲,生产环境必须提供 7×24 小时的网络传输服务。借助于网卡绑定技术,不仅可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正常提供网络服务。

假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡便会立即自动顶替上去,保证数据传输不会中断。

绑定网卡的步骤如下:
第 1 步:在虚拟机系统中再添加一块网卡设备,确保两块网卡都处在同一个网络连接中(即网卡模式相同)。处于模式的网卡设备才可以进行网卡绑定,否则这两块网卡无法互相传送数据。

第 2 步:使用 Vim 文本编辑器来配置网卡设备的绑定参数。网卡绑定的理论知识类似于前面学习的RAID 硬盘组,我们需要对参与绑定的网卡设备逐个进行“初始设置”。需要注意的是,这些原本独立的网卡设备此时需要被配置成为一块“从属”网卡,服务于“主”网卡,不应该再有自己的IP 地址等信息。在进行了初始设置之后,它们就可以支持网卡绑定。

[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno16777736
MASTER=bond0
SLAVE=yes
[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno33554968
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=eno33554968
MASTER=bond0
SLAVE=yes

还需要将绑定后的设备命名为 bond0 并把 IP 地址等信息填写进去,这样当用户访问相应服务的时候,实际上就是由这两块网卡设备在共同提供服务。

[root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.10.10
PREFIX=24
DNS=192.168.10.1
NM_CONTROLLED=no

第 3 步:让 Linux 内核支持网卡绑定驱动。常见的网卡绑定驱动有三种模式——mode0、mode1和mode6。下面以绑定两块网卡为例,讲解使用的情景。

  • mode0(平衡负载模式):平时两块网卡都工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术。
  • mode1(自动备援模式):平时只有一块网卡工作,在它故障后自动替换为另外的网卡。
  • mode6(平衡负载模式):平时两块网卡都工作,且自动备援,无须交换机设备提供辅助支持。

使用 Vim 文本编辑器创建一个用于网卡绑定的驱动文件,使得绑定后的 bond0 网卡设备能够支持绑定技术(bonding);同时定义网卡以 mode6 模式进行绑定,且出现故障时自动切换的时间为 100 毫秒。

[root@linuxprobe ~]# vim /etc/modprobe.d/bond.conf
alias bond0 bonding
options bond0 miimon=100 mode=6

第 4 步:重启网络服务后网卡绑定操作即可成功。正常情况下只有 bond0 网卡设备才会有 IP 地址等信息:

[root@linuxprobe ~]# systemctl restart network
[root@linuxprobe ~]# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe9c:637d prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9c:63:7d txqueuelen 0 (Ethernet)
RX packets 700 bytes 82899 (80.9 KiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 588 bytes 40260 (39.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno16777736: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:9c:63:73 txqueuelen 1000 (Ethernet)
RX packets 347 bytes 40112 (39.1 KiB)
RX errors 0 dropped 6 overruns 0 frame 0
TX packets 263 bytes 20682 (20.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno33554968: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500
ether 00:0c:29:9c:63:7d txqueuelen 1000 (Ethernet)
RX packets 353 bytes 42787 (41.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 325 bytes 19578 (19.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

9.2 远程控制服务

9.2.1 配置sshd 服务

想要使用 SSH(Secure Shell) 协议来远程管理Linux 系统,则需要部署配置sshd 服务程序。sshd 是基于SSH协议开发的一款远程管理服务程序,不仅使用起来方便快捷,而且能够提供两种安全验证的方法:

  • 基于口令的验证——用账户和密码来验证登录;
  • 基于密钥的验证——需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该方式相较来说更安全。

sshd 服务配置文件/etc/ssh/sshd_config中包含的重要参数:

[root@linuxprobe Desktop]# cat /etc/ssh/sshd_config | egrep -v "^#|^$"
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile  .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
X11Forwarding yes
UsePrivilegeSeparation sandbox      # Default for new installations.
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem   sftp    /usr/libexec/openssh/sftp-server
[root@linuxprobe Desktop]#
参数 作用
Port 22 默认的sshd 服务端口
ListenAddress 0.0.0.0 设定sshd 服务器监听的IP 地址
Protocol 2 SSH 协议的版本号
HostKey /etc/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 是否允许空密码登录(很不安全)

如果禁止以root 管理员的身份远程登录到服务器,则可以大大降低被黑客暴力破解密码的几率。把 #PermitRootLogin yes 参数前的井号(#)去掉,并把参数值 yes 改成 no,这样就不再允许 root 管理员远程登录了。

如果想让新配置文件生效,则需要手动重启相应的服务程序。最好也将这个服务程序加入到开机启动项中,这样系统在下一次启动时,该服务程序便会自动运行,继续为用户提供服务。

[root@linuxprobe ~]# systemctl restart sshd
[root@linuxprobe ~]# systemctl enable sshd

9.2.2 安全密钥验证

第 1 步:使用ssh-keygen在客户端主机中生成密钥对。

[root@linuxprobe ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):按回车键或设置密钥的存储路径
Created directory '/root/.ssh'.
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:
40:32:48:18:e4:ac:c0:c3:c1:ba:7c:6c:3a:a8:b5:22 root@linuxprobe.com
The key's randomart image is:
+--[ RSA 2048]----+
|+*..o . |
|*.o + |
|o* . |
|+ . . |
|o.. S |
|.. + |
|. = |
|E+ . |
|+.o |
+-----------------+

第 2 步:使用ssh-copy-id把客户端主机中生成的公钥文件传送至远程主机:

[root@linuxprobe ~]# ssh-copy-id 192.168.10.10
The authenticity of host '192.168.10.20 (192.168.10.10)' can't be established.
ECDSA key fingerprint is 4f:a7:91:9e:8d:6f:b9:48:02:32:61:95:48:ed:1e:3f.
Are you sure you want to continue connecting (yes/no)? yes
/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.10.10's password:    此处输入远程服务器密码
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '192.168.10.10'"
and check to make sure that only the key(s) you wanted were added.

第 3 步:对服务器进行设置,使其只允许密钥验证,拒绝传统的口令验证方式。并重启sshd 服务程序。

[root@linuxprobe ~]# vim /etc/ssh/sshd_config
………………省略部分输出信息………………# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart sshd

第 4 步:在客户端尝试登录到服务器,此时无须输入密码也可成功登录。

[root@linuxprobe ~]# ssh 192.168.10.10
Last login: Mon Apr 13 19:34:13 2017

9.2.3 远程传输命令

scp(secure copy)是一个基于SSH 协议在网络之间进行安全传输(上传 & 下载)的命令。
如果两台机器之间设置好了密钥验证,不需要账户和密码就能传输文件。

上传格式:scp [参数] 本地文件 远程帐户@远程IP地址:远程目录
下载格式:scp [参数] 远程用户@远程IP地址:远程文件 本地目录

参数 作用
-v 显示详细的连接进度
-P 指定远程主机的 sshd 端口号
-r 用于传送文件夹
-6 使用IPv6 协议

9.3 不间断会话服务

当与远程主机的会话被关闭时,在远程主机上运行的命令也随之被中断。

screen 是一款能够实现多窗口远程控制的开源服务程序,简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用 screen 服务程序同时在多个远程会话中自由切换,能够做到实现如下功能。

  • 会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
  • 多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
  • 会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。

在 RHEL 7 系统中,没有默认安装 screen 服务程序,因此需要配置 Yum 仓库来安装它。使用 Yum 仓库来安装 screen 服务程序的步骤如下:
第一步:挂载光盘
mkdir -p /media/cdrom
mount /dev/cdrom /media/cdrom

第二步:编辑/etc/fstab,使其永久生效

/dev/cdrom /media/cdrom iso9660 defaults 0 0

第三步:编辑yum仓库的配置文件
cd /etc/yum.repos.d
vim rhel7.repo 【名字随便起,repo结尾即可】

[rhel7]
name=rhel7
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

YUM的三种提供方式:

  1. http://
  2. ftp://
  3. file:///media/cdrom【本地文件】

第四步:安装 screen 服务程序
yum install screen

9.3.1 管理远程会话

screen 命令能做的事情非常多:

  • -S 参数创建会话窗口
  • -d 参数将指定会话进行离线处理
  • -r 参数恢复指定会话
  • -x 参数一次性恢复所有的会话
  • -ls 参数显示当前已有的会话
  • -wipe 参数把目前无法使用的会话删除

创建一个名称为 backup 的会话窗口。当在命令行中敲下这条命令的一瞬间,屏幕会快速闪动一下,这时就已经进入 screen 服务会话中了,在里面运行的任何操作都会被后台记录下来。

[root@linuxprobe ~]# screen -S backup
[root@linuxprobe ~]#

执行命令后会立即返回一个提示符。虽然看起来与刚才没有不同,但实际上可以查看到当前的会话正在工作中。

[root@linuxprobe ~]# screen -ls
There is a screen on:
32230.backup (Attached)
1 Socket in /var/run/screen/S-root.

执行 exit 命令即可退出一个会话。

[root@linuxprobe ~]# exit
[screen is terminating]

在日常的生产环境中,其实并不是必须先创建会话,然后再开始工作。可以直接使用 screen 命令执行要运行的命令,这样在命令中的一切操作也都会被记录下来,当命令执行结束后 screen 会话也会自动结束。

[root@linuxprobe ~]# screen vim memo.txt
welcome to linuxprobe.com

先来创建一个名为 linux 的会话,然后强行把窗口关闭掉(这与进行远程连接时突然断网具有相同的效果):

[root@linuxprobe ~]# screen -S linux
[root@linuxprobe ~]#
[root@linuxprobe ~]# tail -f /var/log/messages
Feb 20 11:20:01 localhost systemd: Starting Session 2 of user root.
Feb 20 11:20:01 localhost systemd: Started Session 2 of user root.
Feb 20 11:21:19 localhost dbus-daemon: dbus[1124]: [system] Activating service
name='com.redhat.SubscriptionManager' (using servicehelper)
Feb 20 11:21:19 localhost dbus[1124]: [system] Activating service name='com.
redhat.SubscriptionManager' (using servicehelper)
Feb 20 11:21:19 localhost dbus-daemon: dbus[1124]: [system] Successfully activated
service 'com.redhat.SubscriptionManager'
Feb 20 11:21:19 localhost dbus[1124]: [system] Successfully activated service 'com.
redhat.SubscriptionManager'
Feb 20 11:30:01 localhost systemd: Starting Session 3 of user root.
Feb 20 11:30:01 localhost systemd: Started Session 3 of user root.
Feb 20 11:30:43 localhost systemd: Starting Cleanup of Temporary Directories...
Feb 20 11:30:43 localhost systemd: Started Cleanup of Temporary Directories.

由于刚才关闭了会话窗口,这样的操作在传统的远程控制中一定会导致正在运行的命令也突然终止,但在screen 不间断会话服务中则不会这样。我们只需查看一下刚刚离线的会话名称,然后尝试恢复回来就可以继续工作了:

[root@linuxprobe ~]# screen -ls
There is a screen on:
13469.linux (Detached)
1 Socket in /var/run/screen/S-root.
[root@linuxprobe ~]# screen -r linux
[root@linuxprobe ~]#
[root@linuxprobe ~]# tail -f /var/log/messages
Feb 20 11:20:01 localhost systemd: Starting Session 2 of user root.
Feb 20 11:20:01 localhost systemd: Started Session 2 of user root.
Feb 20 11:21:19 localhost dbus-daemon: dbus[1124]: [system] Activating service
name='com.redhat.SubscriptionManager' (using servicehelper)
Feb 20 11:21:19 localhost dbus[1124]: [system] Activating service name='com.
redhat.SubscriptionManager' (using servicehelper)
Feb 20 11:21:19 localhost dbus-daemon: dbus[1124]: [system] Successfully
activated service 'com.redhat.SubscriptionManager'
Feb 20 11:21:19 localhost dbus[1124]: [system] Successfully activated service
'com.redhat.SubscriptionManager'
Feb 20 11:30:01 localhost systemd: Starting Session 3 of user root.
Feb 20 11:30:01 localhost systemd: Started Session 3 of user root.
Feb 20 11:30:43 localhost systemd: Starting Cleanup of Temporary Directories...
Feb 20 11:30:43 localhost systemd: Started Cleanup of Temporary Directories.
Feb 20 11:40:01 localhost systemd: Starting Session 4 of user root.
Feb 20 11:40:01 localhost systemd: Started Session 4 of user root.

如果我们突然又想到了还有其他事情需要处理,也可以多创建几个会话窗口放在一起使用。如果这段时间内不再使用某个会话窗口,可以把它设置为临时断开(detach)模式,随后在需要时再重新连接(attach)回来即可。这段时间内,在会话窗口内运行的程序会继续执行。

9.3.2 会话共享功能

当多个用户同时控制主机的时候,screen 命令可以把屏幕内容共享出来,让每个用户都可以看到相同的内容。

首先使用 sshd 服务程序将 终端A 远程连接到服务器,并创建一个会话窗口。

[root@client A ~]# ssh 192.168.10.10
The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is 70:3b:5d:37:96:7b:2e:a5:28:0d:7e:dc:47:6a:fe:5c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
root@192.168.10.10's password:
Last login: Wed May 4 07:56:29 2017
[root@linuxprobe ~]# screen -S linuxprobe
[root@linuxprobe ~]#

然后,使用 sshd 服务程序将 终端B 远程连接到服务器,并执行获取远程会话的命令。接下来,两台主机就能看到相同的内容了。

[root@client B ~]# ssh 192.168.10.10
The authenticity of host '192.168.10.10 (192.168.10.10)' can't be established.
ECDSA key fingerprint is 70:3b:5d:37:96:7b:2e:a5:28:0d:7e:dc:47:6a:fe:5c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.10' (ECDSA) to the list of known hosts.
root@192.168.10.10's password: 此处输入root 管理员密码
Last login: Wed Feb 22 04:55:38 2017 from 192.168.10.10
[root@linuxprobe ~]# screen -x
[root@linuxprobe ~]#

复习题

  1. 请简述配置 Yum 仓库的步骤。
    :首先应该创建挂载目录并把光盘镜像文件与其关联,然后修改Yum 的配置文件,填写入相关参数,尤其需要注意挂载目录的存放路径要正确无误,最后便可使用 Yum 命令来安装相关的服务程序了。

  2. screen 服务程序能够让用户实现远程控制的不间断会话服务,即便网络发生中断也不丢失对远程主机的会话控制。那么,当想要恢复到一个名为 linux 的会话窗口时,应该怎么做呢?
    :执行命令 screen -r linux 即可恢复到这个会话窗口中。

Linux就该这么学——Day9相关推荐

  1. 《Linux就该这么学》培训笔记_ch01_部署虚拟环境安装Linux系统

    <Linux就该这么学>培训笔记_ch01_部署虚拟环境安装Linux系统 文章最后会post上书本的笔记照片. 文章主要内容: 在虚拟机中安装红帽RHEL7系统 在Linux系统中找回r ...

  2. 《Linux就该这么学》培训笔记_ch06_存储结构与磁盘划分

    <Linux就该这么学>培训笔记_ch06_存储结构与磁盘划分 文章最后会post上书本的笔记照片. 文章主要内容: Linux系统的文件存储结构(FHS标准) 物理设备命名规则(udev ...

  3. Linux就应该这么学第七课-文件的特殊权限

    Linux就应该这么学第七课 文件的特殊权限 1.SUID 将文件执行者临时获取所有者的权限 u+s 2.SGID 让执行者临时拥有属组的权限 g+s 在某个目录中创建的文件自动继承该目录的用户组(只 ...

  4. Linux就该这么学-使用实战

    2019独角兽企业重金招聘Python工程师标准>>> 基本上已经完整的跟着刘老师学习了遍<Linux就该这么学>这本,然后又按照书籍对着自己的电脑反复的练习练习.学习l ...

  5. linux就该这么学第八课

    第5章 用户身份与文件权限. Linux系统技术交流QQ群(463590)验证问题答案:刘遄Linux就该这么学 <Linux就该这么学>最新正式版已出版上市,同学们可在线上京东网.当当网 ...

  6. 《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统

    <Linux就该这么学>培训笔记_ch18_使用MariaDB数据库管理系统 文章最后会post上书本的笔记照片. 文章主要内容: 初始化MariaDB服务 管理用户以及授权 创建数据库与 ...

  7. linux车机按键学习,linux就该这么学

    前言 学习是一件苦差 我无意回避这个问题--学习本是件痛苦的事情,如果学习Linux真的很简单,那么必是骗子说的谎话,起码这不能给你带来高薪,打开电脑后沉思,是该聊会天那~还是追个美剧那~还是打盘LO ...

  8. Linux就该这么学第十三节课学习心得

    9.1 配置网卡服务 9.1.1 配置网卡参数 截至目前,大家已经完全可以利用当前所学的知识来管理Linux系统了.当然,大家的水平完全可以更进一步,当有朝一日登顶技术巅峰时,您一定会感谢现在正在努力 ...

  9. 《Linux就该这么学》培训笔记_ch00_认识Linux系统和红帽认证

    <Linux就该这么学>培训笔记_ch00_认识Linux系统和红帽认证 文章最后会post上书本的笔记照片. 文章主要内容: 认识开源 Linux系统的种类及优势特性 认识红帽系统及红帽 ...

最新文章

  1. Spark新愿景:让深度学习变得更加易于使用——见https://github.com/yahoo/TensorFlowOnSpark...
  2. 001-引入layui和layui.code方法
  3. Android提供的LruCache类简介
  4. 京东五星电器送扫地机器人_京东五星电器联手打造互联网小家电“孵化器”
  5. [Leedcode][JAVA][第22题括号生成][DFS][BFS][动态规划]
  6. 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——支持多种数据库。让分页更加简单。...
  7. TextView的跑马灯效果(AS开发实战第二章学习笔记)
  8. 227 用栈模拟汉诺塔问题
  9. Javascript:Ajax案例实操
  10. Activiti7实战-入门
  11. python sass_引入sass变量
  12. 企业不可忽略的问题——员工移动设备管理
  13. 适合客厅的挂画 山水画让家活色生香
  14. 水下SLAM论文!!!
  15. steam同乐无法连接远程计算机,Steam远程同乐功能怎么使用_Steam远程同乐功能使用方法_3DM单机...
  16. 2015网易游戏校园招聘笔试题 研发岗
  17. jQuery简单实线钟表并随机钟表数字颜色
  18. 蚊子凭啥只咬你?科学家用 5 年造出一批“脑子发光”的蚊子,终于搞懂背后机制
  19. java教程(三)初识J2ee十三个规范
  20. 【PMP】Head First PMP 学习笔记 第八章 质量管理

热门文章

  1. 随机过程 基本概念和基本类型
  2. 索引节点inode: Linux内核文件系统之(inode)
  3. 我的世界服务器怎么修改皮肤,我的世界怎么换皮肤 我的世界皮肤更换使用教程...
  4. ULN2003步进电机 5V/12V步进电机 28BYJ-48步进电机 13003驱动板开发者文档
  5. 山东大学软件工程应用与实践——GMSSL开源库(十)——重要的大整数
  6. 【PID】51单片机PID控制电机转速
  7. FixedUpdate()和Update的区别
  8. Qt5+MySQL 插入中文乱码解决方案
  9. 帝国php调用文章列表,帝国CMS调用自定义列表名称的方法(简单二次开发实现)
  10. 5G无线路由器在智慧水利监测中的应用