跳转至

Linux 运维

1 查看 linux 是 centos 或 ubuntu

  1. 执行 lsb_release -a,ubuntu 版本会显示信息,centos 版显示错误
  2. 执行 cat /etc/redhat-release,centos 版会显示信息,ubuntu 版会显示错误

2 查看机器重启记录

  1. 执行:last reboot
$ last reboot
reboot   system boot  4.19.12-1.el7.el Tue Apr 19 18:10 - 19:12  (01:02)    
reboot   system boot  4.19.12-1.el7.el Sun Apr 17 21:41 - 19:12 (1+21:31)   
reboot   system boot  4.19.12-1.el7.el Sun Apr 17 04:28 - 19:12 (2+14:44)   
reboot   system boot  4.19.12-1.el7.el Sat Apr 16 20:39 - 19:12 (2+22:33)   
reboot   system boot  4.19.12-1.el7.el Fri Apr 15 06:56 - 19:12 (4+12:16)   
reboot   system boot  4.19.12-1.el7.el Thu Apr 14 19:43 - 19:12 (4+23:29)   
reboot   system boot  4.19.12-1.el7.el Sun Sep  5 00:29 - 19:41 (221+19:11) 
reboot   system boot  4.19.12-1.el7.el Sat Sep  4 05:26 - 19:41 (222+14:15) 
reboot   system boot  4.19.12-1.el7.el Wed Sep  1 08:12 - 19:41 (225+11:28) 
reboot   system boot  4.19.12-1.el7.el Tue Aug 31 03:17 - 19:41 (226+16:23) 
reboot   system boot  4.19.12-1.el7.el Thu Aug 26 22:11 - 19:41 (230+21:29) 
reboot   system boot  4.19.12-1.el7.el Thu Aug 26 17:06 - 19:41 (231+02:34) 
reboot   system boot  4.19.12-1.el7.el Thu Aug 26 16:43 - 19:41 (231+02:58) 
reboot   system boot  4.19.12-1.el7.el Fri Aug 20 11:30 - 19:41 (237+08:11) 

3 修改系统 hostid

  • 示例
15ac1f1d
echo -ne '\x1d\x1f\xac\x15' > /etc/hostid

4 修改 hostname

  • 临时修改:hostname 主机名,机器重启失效
  • 永久修改:编辑/etc/hostname 文件,echo 主机名 > /etc/hostname

5 升级系统内核

centos7 默认内核版本是 3.10,此版本内核存在漏洞,k8s 中建议使用 4 以上内核版本

# 1.查看当前内核版本
[root@k8s ~]# uname -r
3.10.0-1160.el7.x86_64
# 2.添加yum源仓库
[root@k8s ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 
[root@k8s ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo 
[root@k8s ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@k8s ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@k8s ~]# yum install -y https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
# 3.更新yum源仓库(这步更新较多,速度比较慢)
[root@k8s ~]# yum -y update
# 4.下载内核
# 4.1查看可用的系统内核包,lt表长期支持版,mt表示当前稳定版
[root@k8s ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
# 4.2安装内核,注意先要查看可用内核,我安装的是5.18.10版本的内核 (可能有些需要安装header包(内核include文件)等,请自行选择安装),kernel-mt-headers kernel-mt-tools kernel-mt-devel
[root@k8s ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y 
# 4.3查看目前可用内核
[root@k8s ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.18.10-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-338bf7be5ccb4bd4a9cd9e4ea1e91ad9) 7 (Core)

# 5.使用序号为0的内核,序号0是前面查出来的可用内核编号
[root@k8s ~]# grub2-set-default 0

# 6.生成 grub 配置文件并重启
[root@k8s ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
# 7.重启机器
[root@k8s ~]# reboot
# 8.查看内核
[root@k8s ~]# uname -r
5.18.9-1.el7.elrepo.x86_64
# 9.安装内核头文件
[root@centos7 ~]# yum install "kernel-devel-uname-r == $(uname -r)"

6 删除内核

[root@centos7 ~]# uname -r
5.18.15-1.el7.elrepo.x86_64
[root@centos7 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.18.15-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.71.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-338bf7be5ccb4bd4a9cd9e4ea1e91ad9) 7 (Core)
[root@centos7 ~]# rpm -qa | grep kernel
kernel-tools-3.10.0-1160.71.1.el7.x86_64
kernel-ml-5.18.15-1.el7.elrepo.x86_64
kernel-3.10.0-1160.el7.x86_64
kernel-3.10.0-1160.71.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.71.1.el7.x86_64

## 删除内核3.10.0的2个内核
[root@centos7 ~]# yum remove kernel-3.10.0-1160.71.1.el7.x86_64 -y
[root@centos7 ~]# yum remove kernel-3.10.0-1160.el7.x86_64 -y
[root@centos7 ~]# reboot
[root@centos7 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.18.15-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (0-rescue-338bf7be5ccb4bd4a9cd9e4ea1e91ad9) 7 (Core)

7 普通用户使用 sudo

# 编辑/etc/sudoers文件
vi /etc/sudoers
# 在添加root ALL=(ALL) ALL那一列下面添加 "用户名 ALL=(ALL) ALL"
root ALL=(ALL) ALL
user ALL=(ALL) ALL
# wq!保存退出
如果需要设置 sudo 不需要输入密码
user ALL=(ALL) NOPASSWD: ALL

7.1 解决 sudo 之后丢失环境变量

可以在 sudo 后增加如下内容:sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH",或者给 sudo 设置别名:alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"' - 示例

$ sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH" echo $HOME
[sudo] shuhw 的密码:
/home/shuhw

8 Linux 给软件设置环境变量

  1. 打开环境变量配置文件
sudo vim /etc/profile
  1. 新增环境变量
# 在 export PATH 下一行新增如下命令,(假设将vscode可执行文件路径设为环境变量)
export VSCODE=/opt/apps/com.visualstudio.code/files/share/code/bin
export PATH=$PATH:$VSCODE
# /opt/apps/com.visualstudio.code/files/share/code/bin是vscode可执行文件路径
  1. 更新配置文件
source /etc/profile
  1. 直接使用命令打开软件
# code是/opt/apps/com.visualstudio.code/files/share/code/bin路径下的可执行文件名
code .

9 shell 补全 bash-complete

  • shell 补全功能:是当在命令行键入命令时,可以通过单击 tab 来自动补全,或双击 tab 显示所有匹配项。
  • 实现方法:通过 linux 自带的 complete,配置相应的规则即可
  • 示例
$ complete -W "one two three" test_complete
$ test_complete [TAB][TAB]
one    three  two    

9.1 complete 语法规则

10 设置 man 手册搜索路径

  • 使用场景:当我们手动安装软件时,可能需要将软件自带的 man 文件并没有在 man 默认搜索路径里,结果是导致 man 失效
  • 方法:
  • 修改 man 配置文件,如 ubuntu 下是 /etc/manpath.config,debian 下是 /etc/man_db.conf
  • 新增一行 MANDATORY_MANPATH /your/man/path, 如 MANDATORY_MANPATH /home/shw/tools/share/man

11 设置 PS1 变量

12 curl

  • 功能:用于网络间传输数据的工具,支持的协议有:HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TFTP, DICT, TELNET, LDAP or FILE
  • 语法:curl [option] urls
  • 无选项:显示目标 url 数据,如 curl https://www.baidu.com/,将输出网页源码
  • -o file>> file:指定输出文件,即重定向到指定文件
  • -s/--silent:不显示进程条和错误信息
  • -X/--request <command>:http 中请求方式,如 GET、PUT、POST,默认 GET 方法
  • -H/--header <header>:指定 http 头部内容
  • -d/--data <data>:指定 http 中 body 消息体内容
  • -T/--upload-file <file>:上传文件,如果用于 ftp,在 url 后有 / 表示的是目录,否则当成文件名,如果文件存在,则覆盖,如果指定了 -a,则追加写。如果用户 http,则采用 put 方法
  • curl -u username:password URL:在访问需要授权的页面时,输入用户名和密码
  • curl -u username URL:同上,仅输入用户名,后根据提示输入密码
  • -C -:断点续传,当上一次下载任务尚未完成而异常终止,使用此选项可以接着上一次进程继续下载
  • -i:参数打印出服务器回应的 HTTP 标头
  • 示例:选项 -o
$ curl https://www.baidu.com/ >>baidu.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  22172      0 --:--:-- --:--:-- --:--:-- 22412
$ curl https://www.baidu.com/ -o baidu.html
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  19924      0 --:--:-- --:--:-- --:--:-- 20190
  • 示例:-T -a
# 将本地baidu.html追加写入ftp://192.168.1.59/下的1.txt中
$ curl -aT baidu.html ftp://192.168.1.59/1.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443    0     0  100  2443      0   7437 --:--:-- --:--:-- --:--:--  7448

13 日志文件里面查找关键字

13.1 head 和 tail 查看日志首位行

  • 查看日志 前 n 行:
  • 语法:cat 文件名 | head -n 数量
  • 示例:cat log.log | head -n 200
  • 查看日志 尾 n 行:
  • 语法:cat 文件名 | tail -n 数量
  • 示例:cat log.log | tail -n 200

13.2 grep 查找日志关键字

  1. 方法 1:
  2. 语法:cat 文件名 | grep "关键词"
  3. 示例:cat log.log | grep "train"
  4. 方法 2:
  5. 语法:grep -i "关键词" 文件名
  6. 示例:grep -i "train" log.log

14 chrony 时间同步

# 安装chrony
[root@k8s ~]# yum install -y chrony
# 开机自启,启动chronyd服务,查看服务状态
[root@k8s ~]# systemctl enable chronyd
[root@k8s ~]# systemctl start chronyd
[root@k8s ~]# systemctl status chronyd
# 测试时间
[root@k8s ~]# date
Sun Jul  3 11:28:18 CST 2022

15 ssh 互信

15.1 ssh 服务安装

  1. 安装 ssh:yum install -y openssh-server openssh-clients
  2. 修改配置:vi /etc/ssh/sshd_config
    1. Port 参数:ssh 端口配置参数
    2. HostKey 参数:加密类型,一般保留 rsa 类型,其它的注释
  3. ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  4. 启动 ssh /usr/sbin/sshd -D &

15.2 ssh 互信

  1. 在需要 ssh 互信的集群中,分别执行下面操作,生成 ssh 私钥和密钥。
  2. 将集群中所有的公钥(保存在 ~/.ssh/id_rsa.pub 文件)都汇总到 authorized_keys 文件中,再将此文件发送到其它互信集群 ~/.ssh/ 下。
$ cd ~/.ssh
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
$ cp id_rsa.pub authorized_keys
$ scp -r .ssh 用户@ip:~/

上面这种方式相当于所有主机都共有一套私钥和密钥。如果只是要单方向 ssh 免密,可以这样:

$ ssh-keygen -t rsa
$ ssh-copy-id user@target_host
其中user是目标主机上的用户名,target_host是目标主机的主机名或IP地址。 如果没有ssh-copy-id命令,你可以手动将公钥内容复制到目标主机的~/.ssh/authorized_keys文件中。

15.3 取消 SSH 第一次连接新主机时提示

  • 方法一:修改 ssh 全局配置 /etc/ssh/ssh_configStrictHostKeyChecking,设置成 no,再重启 sshd, systemctl restart sshd
  • 方法二:修改某个用户 ssh 配置 ~/.ssh/config, 添加 StrictHostKeyChecking no
  • 方法三:ssh 时添加 -o StrictHostKeyChecking=no 选项。

15.4 ssh root 用户权限不足问题

编辑 /etc/ssh/sshd_config 文件,找到 PermitRootLogin 字段修改为 PermitRootLogin yes,以便 root 用户可以 ssh 访问。然后重启 sshd 服务 systemctl restart sshd

16 防火墙

  1. 状态查询:systemctl status firewalld
  2. 启动防火墙:systemctl start firewalld
  3. 查看已经开放的端口:firewall-cmd --list-ports
  4. 重启防火墙:firewall-cmd --reload
  5. 添加新端口:firewall-cmd --zone=public --add-port=82-85/tcp --permanent
  6. 其他查看端口开放的方法:firewall-cmd --zone=public --query-port=81/tcp
  7. 关闭端口:firewall-cmd --zone=public --remove-port=81/tcp --permanent
  8. 关闭防火墙:systemctl stop firewalld

16.1 不关闭防火墙暴露指定端口供外网访问

在开启防火墙时,如果想要外网访问主机,需要在防火墙配置中将此访问端口公开,否则访问会失败。比如你的机器作为 web 服务器,需要配置防火墙开放 80 端口公网才能访问。

17 systemd

  • 官网
  • https://docs.fedoraproject.org/en-US/quick-docs/understanding-and-administering-systemd/index.html
Linux 启动阶段始于内核加载了 `init` 或 `systemd`(取决于具体发行版,centos7后使用systemd)之后。`init` 和 systemd 程序启动并管理所有其它进程,它们在各自的系统上都被称为“所有进程之母”(进程号为1)。

17.1 service 单元

  • https://zhuanlan.zhihu.com/p/472379780

17.2 systemctl 管理程序

systemctl是用来管理systemd的工具

17.2.1 systemctl status 状态类型

在操作系统中,有某些服务只需要初始化一下就可以了;不需要在服务器中启动一个守护进程。这种服务初始化完成后就直接退出,其服务的状态就是active(exited)。

使用 systemctl 查看服务的状态,返回的状态有以下几种: 1. loaded:系统服务已经初始化完成,加载过配置 2. active(running):正有一个或多个程序正在系统中执行, vsftpd 就是这种模式 3. atcive(exited) :仅执行一次就正常结束的服务, 目前并沒有任何程序在系統中执行 4. atcive(waiting):正在执行当中,不过还在等待其他的事件才能继续处理 5. inactive :服务关闭 6. enbaled :服务开机启动 7. disabled :服务开机不自启 8. static :服务开机启动项不可被管理 9. failed :系统配置错误

18 pkg-config

  • 功能:获取已安装库的元信息(比如需要链接的 lib 库,包含的头文件信息)。需要配置库信息相关文件 (.pc 文件),然后 pkg-config 去解析

18.1 pkg-config 使用

使用方式:首先要先定义.pc 文件,然后将.pc 文件所在目录写入 PKG_CONFIG_PATH 变量中,并导出,如 export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig,这样 pkg-config 命令才能找到.pc 文件 - 语法:pkg-config [option] 库名称 - 可选参数: - [--cflags]: 显示如头文件包含的信息,如 -I${libdir}/glib/include - [--libs]: 显示库链接信息,如 -L${libdir} -lgobject-1.3 - ... - 示例:pkg-config --cflags --libs fuse: 获取 libfuse 的链接和头文件包含信息

$ pwd
/home/here4/3rd/fuse3
$ tree
.
|-- bin
|   `-- fusermount3
|-- etc
|   `-- fuse.conf
|-- include
|   `-- fuse3
|       |-- cuse_lowlevel.h
|       |-- fuse_common.h
|       |-- fuse.h
|       |-- fuse_log.h
|       |-- fuse_lowlevel.h
|       |-- fuse_opt.h
|       `-- libfuse_config.h
|-- lib64
|   |-- libfuse3.so -> libfuse3.so.3
|   |-- libfuse3.so.3 -> libfuse3.so.3.16.2
|   |-- libfuse3.so.3.16.2
|   `-- pkgconfig
|       `-- fuse3.pc
|-- sbin
|   `-- mount.fuse3
`-- share
    `-- man
        |-- man1
        |   `-- fusermount3.1
        `-- man8
            `-- mount.fuse3.8

11 directories, 16 files
$ export PKG_CONFIG_PATH=/home/here4/3rd/fuse3/lib64/pkgconfig
$ pkg-config fuse3 --cflags --libs
-I/home/here4/3rd/fuse3/include/fuse3  -L/home/here4/3rd/fuse3/lib64 -lfuse3 -lpthread  

18.2 .pc 文件规则

.pc 文件中每行具有 2 中含义:1.以=赋值的变量,如下面示例中 prefix 变量;2.以: 标识的预定义的关键字,如下面示例中 Name 关键字 - 关键字如下: - Name:包名;(特点:简洁,可读;不是 pkg-config 命令中的库名) - Description:包名的描述信息。(简洁明了) - URL:可以为使用者获得更多信息或下载本包的网址 - Version:包的版本信息 - Requires:提供依赖包的检测功能。每一个依赖包以 , 区分,也可以使用=, <, >, >=, <=来指定版本;如 Requires: glib-2.0 = 1.3.1 - Conflicts:提供冲突包的检测功能。每一个冲突包以 , 区分,也可以使用=, <, >, >=, <=来指定版本,也可以重复指定不同版本的包;如 Conflicts: foobar=4.8 foobar <= 4.5-Libs:使用本包需要的链接信息,如Libs: -L${libdir} -lgobject-1.3-Libs.private:私有库的链接信息。静态链接需要使用。如Libs.private: -lm。Private libraries are libraries which are not exposed through your library, but are needed in the case of static linking. -Cflags:一些编译选项,包括头文件包含路径,如Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib/include` - 示例

##This is a comment
prefix=/home/hp/unst   # this defines a variable
exec_prefix=${prefix}  # defining another variable in terms of the first
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: GObject                            # human-readable name
Description: Object/type system for GLib # human-readable description
Version: 1.3.1
URL: http://www.gtk.org
Requires: glib-2.0 = 1.3.1
Conflicts: foobar <= 4.5
Libs: -L${libdir} -lgobject-1.3
Libs.private: -lm
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib/include

19 查看系统相关信息

19.1 查看内核版本

$ cat /proc/version
Linux version 3.10.0-1160.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Mon Oct 19 16:18:59 UTC 2020

19.2 查看内存信息

  • 方式一
$ cat /proc/meminfo 
MemTotal:       65723340 kB
MemFree:         8569892 kB
MemAvailable:   23374572 kB
Buffers:         1395216 kB
Cached:         43580980 kB
SwapCached:            0 kB
  • 方式二
$ free 
              total        used        free      shared  buff/cache   available
Mem:       65723340    10204656     8495416    31328476    47023268    23336484
Swap:             0           0           0

19.3 查看 cpu 信息

$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 63
model name      : Intel(R) Xeon(R) CPU E5-2623 v3 @ 3.00GHz
stepping        : 2
microcode       : 0x36
cpu MHz         : 1293.164
cache size      : 10240 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0

总核数 = 物理 CPU 个数 X 每颗物理 CPU 的核数

总逻辑 CPU 数 = 物理 CPU 个数 X 每颗物理 CPU 的核数 X 超线程数

19.3.1 查看物理 CPU 个数

  • 显示 2 个物理 CPU
$ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
2

19.3.2 查看每个物理 CPU 中 core 的个数 (即核数)

  • 显示每一个物理 CPU 含 14 个核
$ cat /proc/cpuinfo| grep "cpu cores"| uniq
cpu cores       : 14

19.3.3 查看逻辑 CPU 的个数

  • 显示一共有 56 个逻辑 CPU
$ cat /proc/cpuinfo| grep "processor"| wc -l
56

19.3.4 查看 CPU 信息(型号)

$ cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
     56  Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz

19.4 查看某一进程系统资源占用信息 /proc/[PID]

  • /proc/[PID] 目录下有以下文件 (PID 是进程号)
$ ls  /proc/1958076
attr       clear_refs       cpuset   fd       limits     mem         net        oom_score      projid_map  setgroups  statm    timers
autogroup  cmdline          cwd      fdinfo   loginuid   mountinfo   ns         oom_score_adj  root        smaps      status   uid_map
auxv       comm             environ  gid_map  map_files  mounts      numa_maps  pagemap        sched       stack      syscall  wchan
cgroup     coredump_filter  exe      io       maps       mountstats  oom_adj    personality    sessionid   stat       task

19.4.1 查看 io 信息

$ cat /proc/1958076/io
rchar: 21911
wchar: 1420
syscr: 53
syscw: 5
read_bytes: 0
write_bytes: 4096
cancelled_write_bytes: 0
  • 参数解释如下:
  • rchar: 读出的总字节数,read 或者 pread() 中的长度参数总和(pagecache 中统计而来,不代表实际磁盘的读入)
  • wchar: 写入的总字节数,write 或者 pwrite 中的长度参数总和
  • syscr:read() 或者 pread() 总的调用次数
  • syscw:write() 或者 pwrite() 总的调用次数
  • read_bytes: 实际从磁盘中读取的字节总数 (这里 if=/dev/zero 所以没有实际的读入字节数)
  • write_bytes: 实际写入到磁盘中的字节总数
  • cancelled_write_bytes: 由于截断 pagecache 导致应该发生而没有发生的写入字节数(可能为负数)

19.4.2 查看进程的状态 status

  • 参数解释如下:
  • VmHWM: 物理内存占用的峰值
  • VmRSS: 占用的物理内存

19.5 判断固态硬盘和机械硬盘

  1. 使用 lsblk -d 查看块设备名
  2. 使用 cat /sys/block/[块设备名]/queue/rotational
  3. 输出 0 表示设备不可旋转(即固态硬盘)
  4. 输出 1 表示设备可以旋转(即机械硬盘)
  5. 示例:sdf 是机械硬盘,sdg 是固态硬盘
$ lsblk -d
NAME MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda    8:0    0   1.1T  0 disk 
sdb    8:16   0   1.1T  0 disk 
sdc    8:32   0   1.1T  0 disk 
sdd    8:48   0   1.1T  0 disk 
sde    8:64   0   1.1T  0 disk 
sdf    8:80   0   1.1T  0 disk 
sdg    8:96   0 447.1G  0 disk 
sdh    8:112  0 447.1G  0 disk 
sr0   11:0    1  1024M  0 rom  
$ cat /sys/block/sdf/queue/rotational
1
$ cat /sys/block/sdg/queue/rotational
0

19.6 查看 linux 发行版本

  • lsb_release -a

19.7 查询操作系统信息

  • uname -a

20 查看 ip

20.1 hostname

shw@小锋哥:~$ hostname -I
172.22.227.232

20.2 ip

shw@小锋哥:~$ ip addr show

20.3 ifconfig

shw@小锋哥:~$ ifconfig