风险告知

  • 本人及本篇博文不为任何人及任何行为的任何风险承担责任,图解仅供参考,请悉知!
  • 相关配置操作是在一个全新的演示环境下进行的,演示环境中没有任何有价值的数据,但这并不代表摆在你面前的环境也是如此。
  • 生产环境全新安装后(业务上线前)或者自行测试都可放心参考该图解内容,该教程是完全站在生产业务角度去做的建议配置(业务厂商有特殊要求的除外)。
  • 图解内容可能存在一些自动执行的shell脚本,所以,一定要全面评估并且备份有价值数据后再进行。因为任何操作都是有丢失数据风险的可能,比如说误操作覆盖或移动有价值数据进而影响到生产业务都无异于删库,无论是你是否即将跑路!
  • 删除跑路的方式千万条,不仅仅有你最熟悉的rm rf /*,有时候一个空格都能要了你的小(老)命,小心是的万年船,最好的归宿是阖家欢乐,是团团圆圆,是你好我好大家好,是博主真好!

废话翩翩

解释下为什么要码这么多文字说明,包括后续的内容中也是如此,注释说明真的多。因为我觉得我们在学习过程过应该有点儿逼数,那就是学习一定不仅仅为了学会某一条命令,某一个技巧......更重要的是尽可能的理解这件事儿的来龙去脉、因果关系,最好能形成自己的思路。图解内容完全手打,所以难免有所纰漏,欢迎评论区指正,同时内容处于一个不断(随时)更新的状态,以最新的内容为准!

开拓视野

众所周知,各种GNU/Linux发行版都默认提供了在线repo源,安装软件不像是Windows那样,下载一个安装包,双击运行,一路下一步......现代的Linux发行版都是大多数而且都习惯使用命令行进行软件的安装,经常使用的方式就是默认提供的包管理器配合在线或者本地的repo仓库源进行安装。

食用范围

目前测试结果来讲适用于几乎所有GNU/Linux发行版。可以使用yum、dnf、apt-get、apt、zypper等高级包管理工具进行安装。

避坑指南

这里其实没什么坑,非要硬找出来几个坑的话,扯得上的比如说安装时有可能会覆盖旧版本,进而影响到现有服务的运行。

言归正传

本篇博文的主题是在安装好(一般生产环境都是最小化安装)使用yum开源包管理器的GNU/Linux发行版后,默认预安装的软件包相对较少。后期在使用时候为了便于我们的运维,建议安装一些必要的软件包来辅助我们日常运维,接下来我们就展开来看必要的软件包都有哪些。以yum高级包管理器为环境进行演示,其他发行版的高级包管理器请自行查阅相关资料。

# 最小化安装的操作系统默认并没有安装tree这个软件包,所以我们在使用tree软件包所提供的tree命令时就会提示未找到命令
[root@centos85 ~]# tree /boot
-bash: tree: 未找到命令
# 这个时候也不用着急,我们只需要使用yum provides tree去查询当前repo源仓库中是否有包含这个命令的软件包,如果有,控制台会输出软件包的详细信息,这里有我们需要使用的关键信息————软件包名称
[root@centos85 ~]# yum provides tree
tree-1.7.0-15.el8.x86_64 : File system tree viewer
仓库        :local
匹配来源:
提供    : tree = 1.7.0-15.el8
# 查询到软件包名称后,我们就可以使用yum install tree命令来安装该软件包了,这里提示下,yum install后跟的软件包名称可以不带版本号,默认安装的就时最新的,细心的同学在这里也会发现,使用yum高级包管理器会显示需要安装的软件包是否有相关依赖软件包,如果有,会一并安装。
[root@centos85 ~]# yum install tree
local                                                                                                                                                                           1.4 MB/s | 3.9 kB     00:00
依赖关系解决。
================================================================================================================================================================================================================
 软件包                                         架构                                             版本                                                     仓库                                             大小
================================================================================================================================================================================================================
安装:
 tree                                           x86_64                                           1.7.0-15.el8                                             local                                            59 k

事务概要
================================================================================================================================================================================================================
安装  1 软件包

总计:59 k
安装大小:109 k
确定吗?[y/N]: y
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                                                 1/1
  安装    : tree-1.7.0-15.el8.x86_64                                                                                                                                                                        1/1
  运行脚本: tree-1.7.0-15.el8.x86_64                                                                                                                                                                        1/1
  验证    : tree-1.7.0-15.el8.x86_64                                                                                                                                                                        1/1

已安装:
  tree-1.7.0-15.el8.x86_64

完毕!
# 安装完成后,再次使用tree命令,可以看到tree命令已经可以正常显示指定目录的目录结构了
[root@centos85 ~]# tree /boot/
/boot/
├── config-4.18.0-348.el8.x86_64
├── efi
│   └── EFI
│       ├── BOOT
│       │   ├── BOOTX64.EFI
│       │   └── fbx64.efi
│       └── centos
│           ├── BOOTX64.CSV
│           ├── fonts
│           ├── grub.cfg
│           ├── grubenv
│           ├── grubx64.efi
│           ├── mmx64.efi
│           ├── shimx64-centos.efi
│           └── shimx64.efi
├── grub2
│   └── grubenv -> ../efi/EFI/centos/grubenv
├── initramfs-0-rescue-972a2456696840e0be35edacaee92c05.img
├── initramfs-4.18.0-348.el8.x86_64.img
├── loader
│   └── entries
│       ├── 972a2456696840e0be35edacaee92c05-0-rescue.conf
│       └── 972a2456696840e0be35edacaee92c05-4.18.0-348.el8.x86_64.conf
├── symvers-4.18.0-348.el8.x86_64.gz -> /lib/modules/4.18.0-348.el8.x86_64/symvers.gz
├── System.map-4.18.0-348.el8.x86_64
├── vmlinuz-0-rescue-972a2456696840e0be35edacaee92c05
└── vmlinuz-4.18.0-348.el8.x86_64

8 directories, 19 files
[root@centos85 ~]#

bash-completion

bash-completion是一个bash命令补全工具,举个例子,安装之前,使用yum install <软件包名称>时,除了yum本身可以补全之外,后续的install和软件包名称都需要完完整整一字不落的敲进去,关键时还不能出错。安装之后就不一样了,当你敲完yum ins之后,使用TAB键就可以补全命令或者列出所有可能的命令,软件包名称也是一样,部分输入后就可以使用TAB键补全或者是获取提示。

[root@centos85 ~]# yum install bash-completion
local                                                                                                                                                                           3.8 MB/s | 3.9 kB     00:00
依赖关系解决。
================================================================================================================================================================================================================
 软件包                                                    架构                                          版本                                                仓库                                          大小
================================================================================================================================================================================================================
安装:
 bash-completion                                           noarch                                        1:2.7-5.el8                                         local                                        274 k
安装依赖关系:
 libpkgconf                                                x86_64                                        1.4.2-1.el8                                         local                                         35 k
 pkgconf                                                   x86_64                                        1.4.2-1.el8                                         local                                         38 k
 pkgconf-m4                                                noarch                                        1.4.2-1.el8                                         local                                         17 k
 pkgconf-pkg-config                                        x86_64                                        1.4.2-1.el8                                         local                                         15 k

事务概要
================================================================================================================================================================================================================
安装  5 软件包

总计:379 k
安装大小:1.0 M
确定吗?[y/N]: y
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                                                 1/1
  安装    : pkgconf-m4-1.4.2-1.el8.noarch                                                                                                                                                                   1/5
  安装    : libpkgconf-1.4.2-1.el8.x86_64                                                                                                                                                                   2/5
  安装    : pkgconf-1.4.2-1.el8.x86_64                                                                                                                                                                      3/5
  安装    : pkgconf-pkg-config-1.4.2-1.el8.x86_64                                                                                                                                                           4/5
  安装    : bash-completion-1:2.7-5.el8.noarch                                                                                                                                                              5/5
  运行脚本: bash-completion-1:2.7-5.el8.noarch                                                                                                                                                              5/5
  验证    : bash-completion-1:2.7-5.el8.noarch                                                                                                                                                              1/5
  验证    : libpkgconf-1.4.2-1.el8.x86_64                                                                                                                                                                   2/5
  验证    : pkgconf-1.4.2-1.el8.x86_64                                                                                                                                                                      3/5
  验证    : pkgconf-m4-1.4.2-1.el8.noarch                                                                                                                                                                   4/5
  验证    : pkgconf-pkg-config-1.4.2-1.el8.x86_64                                                                                                                                                           5/5

已安装:
  bash-completion-1:2.7-5.el8.noarch          libpkgconf-1.4.2-1.el8.x86_64          pkgconf-1.4.2-1.el8.x86_64          pkgconf-m4-1.4.2-1.el8.noarch          pkgconf-pkg-config-1.4.2-1.el8.x86_64

完毕!
[root@centos85 ~]#

tree

tree软件包所包含的tree命令可以输出指定目录的目录结构,这个在言归正传章节已经做过介绍和演示,这里就不在过多赘述了。这里只提一个比较常用的参数-L,有的时候一个目录下包含的子目录很多,目录深度很深,比如说/根目录,使用该参数我们可以限定显示指定目录下的目录深度,演示如下。

# 输出打印/根目录树形结构,并限定目录深度为1
[root@centos85 ~]# tree -L 1 /
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var

19 directories, 0 files
# 输出打印/根目录树形结构,并限定目录深度为2(控制台打印输出内容太多,中间删除了一部分,不影响对比效果)
[root@centos85 ~]# tree -L 2 /
/
├── bin -> usr/bin
├── boot
│   ├── config-4.18.0-348.el8.x86_64
│   ├── efi
│   ├── grub2
│   ├── initramfs-0-rescue-972a2456696840e0be35edacaee92c05.img
│   ├── initramfs-4.18.0-348.el8.x86_64.img
│   ├── loader
│   ├── symvers-4.18.0-348.el8.x86_64.gz -> /lib/modules/4.18.0-348.el8.x86_64/symvers.gz
│   ├── System.map-4.18.0-348.el8.x86_64
│   ├── vmlinuz-0-rescue-972a2456696840e0be35edacaee92c05
│   └── vmlinuz-4.18.0-348.el8.x86_64
├── dev
│   ├── autofs
│   ├── block
│   ├── bsg
│   ├── bus
│   ├── vsock
│   └── zero
├── etc
│   ├── adjtime
│   ├── aliases
│   ├── yum
│   ├── yum.conf -> dnf/dnf.conf
│   ├── yum.repos.d
│   └── yum.repos.d.bak
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
│   └── CentOS-8.5.2111-x86_64-dvd1.iso
├── mnt
│   ├── centos85
│   └── hgfs
├── opt
├── proc
│   ├── 1
│   ├── 10
│   ├── tty
│   ├── uptime
│   ├── version
│   ├── vmallocinfo
│   ├── vmstat
│   └── zoneinfo
├── root
│   └── anaconda-ks.cfg
├── run
│   ├── agetty.reload
│   ├── auditd.pid
│   ├── udev
│   ├── user
│   ├── utmp
│   └── vmware
├── sbin -> usr/sbin
├── srv
├── sys
│   ├── block
│   ├── bus
│   ├── class
│   ├── dev
│   ├── devices
│   ├── firmware
│   ├── fs
│   ├── hypervisor
│   ├── kernel
│   ├── module
│   └── power
├── tmp
│   ├── ks-script-06ov7guf
│   ├── ks-script-rzqmrrvg
├── usr
│   ├── bin
│   ├── games
│   ├── include
│   ├── share
│   ├── src
│   └── tmp -> ../var/tmp
└── var
    ├── adm
    ├── cache
    ├── crash
    ├── spool
    ├── tmp
    └── yp

375 directories, 293 files
[root@centos85 ~]#

tmux

tmux 是一个终端复用器(terminal multiplexer),灰常灰常有用的,当然同类型产品还有screen,只不过是我偏爱tmux。举个例子说明他的使用场景,假如现在你正在使用终端工具远程运维一台服务器,这个时候你使用的命令或者脚本是在后台运行的还没问题,如果是前台命令的话,运行过程中任何原因(网络中断、误操作关闭.......)导致终端工具断开连接,都会导致正在运行的命令执行失败,有的命令执行失败可以重新执行,有的执行失败了需要回退,有时候回退很麻烦,有时候根本无法回退,这个时候就有可能需要推到重来,都是泪啊。使用tmux后情况就不一样了,我们可以使用tmux开启一个虚拟终端,这个虚拟终端你可以简单的理解为你是在服务器面前使用鼠标键盘显示器环境进行运维一样,只要服务器不宕机,你的任务就不会中断,tmux是不是可中!演示中只列出目前我常用的一些功能,日常运维足够了,更多的功能参见官方文档。

# 使用yum install tmux命令安装tmux软件包,会自动解决并安装相关依赖软件包
[root@centos85 ~]# yum install tmux
local                                                                                                                                                                           3.8 MB/s | 3.9 kB     00:00
依赖关系解决。
================================================================================================================================================================================================================
 软件包                                          架构                                              版本                                                  仓库                                              大小
================================================================================================================================================================================================================
安装:
 tmux                                            x86_64                                            2.7-1.el8                                             local                                            317 k

事务概要
================================================================================================================================================================================================================
安装  1 软件包

总计:317 k
安装大小:781 k
确定吗?[y/N]: y
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                                                 1/1
  安装    : tmux-2.7-1.el8.x86_64                                                                                                                                                                           1/1
  运行脚本: tmux-2.7-1.el8.x86_64                                                                                                                                                                           1/1
  验证    : tmux-2.7-1.el8.x86_64                                                                                                                                                                           1/1

已安装:
  tmux-2.7-1.el8.x86_64

完毕!

# 使用tmux new-session -s <自定义会话名称>命令创建一个虚拟终端会话,这条命令可以简写为tmux,只不过会话名称自动以编号的形式编号,我个人不太喜欢,不能做到见名知意,所以我不推荐
[root@centos85 ~]# tmux new-session -s test001
# 先按下前缀键是Ctrl+b激活快捷键,松开后,再按下d以分离当前会话,分离会话不代表结束会话,分离只是分离,会话相关的进程都还在正常运行
[detached (from session test001)]
# 使用tmux list-sessions命令列出所有虚拟终端会话的信息,也可以在会话内部使用快捷键:Ctrl+b松开后再按s
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:17:57 2024) [208x39]
[root@centos85 ~]# tmux new-session -s test002
[detached (from session test002)]
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:17:57 2024) [208x39]
test002: 1 windows (created Thu Jan 25 10:18:36 2024) [208x39]
# 使用tmux attach-sessions -t <已经存在的会话名称或者会话编号>命令接入到被临时分离的虚拟终端会话
[root@centos85 ~]# tmux attach-session -t test001
[detached (from session test001)]
[root@centos85 ~]# tmux attach-session -t test002
# 虚拟终端会话内输入exit,退出并关闭虚拟终端会话,这次是真结束了。这一步也可以在会话内部使用快捷键Ctrl+b松开后再&
[exited]
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:17:57 2024) [208x39]
# 使用tmux rename-session -t <原会话名称> <新会话名称> 命令重命名已经存在的虚拟终端会话,命令执行完成后的终端输出内容,我觉得很诡异,不解。这一步也可以在会话内部使用快捷键Ctrl+b松开后再按$
[root@centos85 ~]# tmux rename-session -t test001 rename-test001
no current client
[root@centos85 ~]# tmux list-sessions
rename-test001: 1 windows (created Thu Jan 25 10:17:57 2024) [208x39]
[root@centos85 ~]# tmux new-session -s test002
[detached (from session test002)]
[root@centos85 ~]# tmux new-session -s test003
[detached (from session test003)]
[root@centos85 ~]# tmux new-session -s test004
[detached (from session test004)]
[root@centos85 ~]# tmux new-session -s test005
[detached (from session test005)]
[root@centos85 ~]# tmux new-session -s test006
[detached (from session test006)]
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:52:55 2024) [208x39]
test002: 1 windows (created Thu Jan 25 10:57:08 2024) [208x39]
test003: 1 windows (created Thu Jan 25 10:57:22 2024) [208x39]
test004: 1 windows (created Thu Jan 25 10:57:28 2024) [208x39]
test005: 1 windows (created Thu Jan 25 10:57:32 2024) [208x39]
test006: 1 windows (created Thu Jan 25 10:57:35 2024) [208x39]
# 使用tmux kill-session -t <已经存在的会话名称>杀死指定的虚拟终端会话,这一步也可以在会话内部使用快捷键Ctrl+b松开后再&
[root@centos85 ~]# tmux kill-session -t test003
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:52:55 2024) [208x39]
test002: 1 windows (created Thu Jan 25 10:57:08 2024) [208x39]
test004: 1 windows (created Thu Jan 25 10:57:28 2024) [208x39]
test005: 1 windows (created Thu Jan 25 10:57:32 2024) [208x39]
test006: 1 windows (created Thu Jan 25 10:57:35 2024) [208x39]
# 使用tmux kill-session不加-t参数指定会话名称时,默认杀死最后一个创建的虚拟终端会话,这一步也可以在会话内部使用快捷键Ctrl+b松开后再&
[root@centos85 ~]# tmux kill-session
[root@centos85 ~]# tmux list-sessions
test001: 1 windows (created Thu Jan 25 10:52:55 2024) [208x39]
test002: 1 windows (created Thu Jan 25 10:57:08 2024) [208x39]
test004: 1 windows (created Thu Jan 25 10:57:28 2024) [208x39]
test005: 1 windows (created Thu Jan 25 10:57:32 2024) [208x39]
[root@centos85 ~]#
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐