shanjayp
shanjayp
Published on 2025-02-10 / 15 Visits
0
0

4. Linux组成部分,获取系统常用配置信息

1. Linux系统目录介绍

  • /(根):系统所有数据都存放在根目录下

  • /bin:存放用户使用的系统管理命令

  • /boot:存放Linux系统内核及引导系统程序

  • /dev:存放硬件设备的目录,如硬盘、光驱设备、驱动程序等等 (记住)

  • /etc:存放服务的配置文件,用户信息文件 (记住)

  • /root:超级管理员的家目录

  • /home:普通用户的家目录(记住)

  • /lib:存放系统中的程序运行所需要的共享库及内核模块

  • /opt:用户自己安装的软件可以放在这个目录

  • /srv:服务启动之后需要访问的数据目录

  • /tmp:普通用户可以存放一些不重要的文件,一些程序运行的过程中产生一些临文件也会存放在这个目录

  • /var:存放系统执行过程中经常变化的文件,如随时都在变化的日志文件就存放/var/log/下 (记住)

  • /mnt、/media :光盘和镜像等预设的挂载点(记住)

  • /proc:Linux伪文件系统,该目录下的数据存在于内存当中,不占用磁盘空间

  • /lib64 :存放共享的模块(系统中一些应用程序在运行的时候自动调用的)

  • /run :程序或服务启动后,存放PID的目录

  • /sys:存放被建立在内存中的虚拟文件系统

  • /usr:操作系统软件资源所放置的目录

    • /usr/bin:与/bin目录相同,存放用户可以使用的命令程序

    • /usr/lib:与/lib目录相同,存放系统中的程序运行所需要的共享库及内核模块

    • /usr/etc:用于存放安装软件时使用的配置文件

    • /usr/games:与游戏相关的数据放置处

    • /usr/include:c/c++等程序语言的档头(header)与包含档(include)放置处

    • /usr/lib64:与/lib64目录相同,存放函式库

    • /usr/libexec:不经常被使用的执行程序或脚本会放置在此目录中

    • /usr/local: 额外安装的软件存放目录 (记住)

    • /usr/sbin:该目录与/sbin目录相同,存放用户可执行的二进制程序文件

    • /usr/share: 放置只读架构的杂项数据文件

    • /usr/src:一般软件源代码建议存放该目录下

2. 查看内核信息

  • uname 命令用于显示系统内核信息

  • 命令格式:uname [-选项...]

  • 常用选项:

    • -s :显示内核名称

    • -r :显示内核版本

[root@localhost ~]# uname
Linux
​
[root@localhost ~]# uname -rs
Linux 3.10.0-957.el7.x86_64
#解释:
Linux   #内核名称
3       #主版本
10      #次版本
0       #修改版本
957     #补丁次数
el7     #Enterprise Linux(企业版Linux)
x86_64  #CPU架构
​
#Linux内核官网
https://www.kernel.org/

3. 查看CPU信息

  • /proc/cpuinfo文件用于存放系统CPU信息

  • lscpu 用于显示CPU架构信息

  • 命令格式:lscpu [-选项]

#查看/proc/cpuinfo文件内容
[root@localhost ~]# cat /proc/cpuinfo 
processor :#系统中逻辑处理核的编号。对于单核处理器,则可认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :   #CPU制造商     
cpu family :  #CPU产品系列代号
model   :    #CPU属于其系列中的哪一代的代号
model name:    #CPU属于的名字及其编号、标称主频
stepping   :   #CPU属于制作更新版本
cpu MHz   :    #CPU的实际使用主频
cache size   :  #CPU二级缓存大小
physical id   : #单个CPU的标号
siblings       :#单个CPU逻辑物理核数
core id        :#当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores    :  #该逻辑核所处CPU的物理核数
apicid          :#用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu             : #是否具有浮点运算单元(Floating Point Unit)
fpu_exception  :  #是否支持浮点计算异常
cpuid level   :   #执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp             :  #表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags          :   #当前CPU支持的功能
bogomips   :       #在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size  :    #每次刷新缓存的大小单位
cache_alignment :  #缓存地址对齐单位
address sizes     :#可访问地址空间位数
power management : #对能源管理的支持,有以下几个可选支持功能:
#使用lscpu查看cpu信息
[root@localhost ~]# lscpu
 Architecture:  架构 
  CPU(s):      逻辑cpu核数 
  Thread(s) per core:   #每个核心线程 
  Core(s) per socket:   #每个cpu插槽核数/每颗物理cpu核数 
  CPU socket(s):        #cpu插槽数 
  Vendor ID:            #cpu厂商ID 
  CPU family:           #cpu系列 
  Model:                #型号 
  Stepping:             #步进 
  CPU MHz:              #cpu主频 
  Virtualization:       #cpu支持的虚拟化技术 
  L1d cache:            #一级缓存(google了下,这具体表示表示cpu的L1数据缓存) 
  L1i cache:            #一级缓存(具体为L1指令缓存) 
  L2 cache:             #二级缓存

4. 查看系统内存信息

  • /proc/meminfo文件用于存放系统内存信息

  • free 用于查看内存使用情况

  • 命令格式:free [-选项]

  • 常用选项:-h #以人类易读方式显示大小(KB,MB,GB)

#查看/proc/meminfo文件内容
[root@localhost ~]# cat /proc/meminfo 
MemTotal:          995896 kB    #所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree:            244196 kB   #表示系统尚未使用的内存。
MemAvailable:       435080 kB   #真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers:             2132 kB   #用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached:             314632 kB  #分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached:            0 kB    #被高速缓冲存储用的交换空间(硬盘的swap)的大小
Active:            295908 kB    #经常使用的高速缓冲存储器页面文件大小
Inactive:          271552 kB    #不经常使用的高速缓冲存储器文件大小
Active(anon):      251528 kB    #活跃的匿名内存
Inactive(anon):     13044 kB    #不活跃的匿名内存
Active(file):       44380 kB    #活跃的文件使用内存
Inactive(file):    258508 kB   #不活跃的文件使用内存
Unevictable:           0 kB    #不能被释放的内存页
Mlocked:               0 kB    #系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal:             0 kB    #交换空间总内存
SwapFree:              0 kB    #交换空间空闲内存
Dirty:                 4 kB    #等待被写回到磁盘的
Writeback:             0 kB    #正在被写回的
AnonPages:         15100 kB    #未映射页的内存/映射到用户空间的非文件页表大小
Mapped:             7160 kB    #映射文件内存
Shmem:               100 kB    #已经被分配的共享内存
Slab:               9236 kB    #内核数据结构缓存
SReclaimable:       2316 kB    #可收回slab内存
SUnreclaim:         6920 kB    #不可收回slab内存
KernelStack:        2408 kB    #内核消耗的内存
PageTables:         1268 kB    #管理内存分页的索引表的大小
NFS_Unstable:          0 kB    #不稳定页表的大小
Bounce:                0 kB    #在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:          0 kB    #FUSE用于临时写回缓冲区的内存
CommitLimit:       22980 kB    #系统实际可分配内存
Committed_AS:     536244 kB    #系统当前已分配的内存
VmallocTotal:     892928 kB    #预留的虚拟内存总量
VmallocUsed:       29064 kB    #已经被使用的虚拟内存
VmallocChunk:     860156 kB    #可分配的最大的逻辑连续的虚拟内存
#使用free命令查看内存使用情况
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           972M        344M        238M         13M        389M        424M
Swap:          2.0G          0B        2.0G
#解释:Mem 物理内存统计信息
total:      物理内存总量
used:       以使用的内存总量
free:       空闲内存总量
shared:     #共享内存总量
buff/cache: #块设备与普通文件占用的缓存数量
available:  #还可以被应用程序使用的物理内存大小
​
#解释:Swap 内存交换空间,当物理内存不足时,可以使用硬盘空间充当内存使用
total:      #交换分区内存总量
used:       #正在使用的交换分区内存
free:       #空闲交换分区内存
​
#关闭swap功能(临时关闭)
[root@localhost ~]# swapoff -a

5. 查看网卡信息

  • 网卡配置文件地址: /etc/sysconfig/network-scripts/网卡名

  • ifconfig 用于显示和设置网卡的参数

  • 命令格式: ifconfig [网卡名]

  • 命令格式:ip a s

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens32
TYPE=“Ethernet“         网卡类型=以太 ※
PROXY_METHOD=“none“     #代理方式=关闭
BROWSER_ONLY="no“       #只是浏览器=否
BOOTPROTO=“none“        获取IP地址的方式=固定IP ※
DEFROUTE=“yes“          #是否设置默认路由=是
IPV4_FAILURE_FATAL=“no“ #是否开启ipv4致命检测=否(如果ipv4配置失败禁用设备)
NAME=“ens32“            物理网卡设备名字 ※
UUID=“3ef0d258-f9a4-49e5-a9da-7b47bc98daa0  “#网卡UUID
DEVICE=“ens32“          网卡名字 ※
ONBOOT=“yes“            开机或重启时是否启动网卡  ※
IPADDR=“192.168.0.210“  IP地址  ※
PREFIX=“24“             子网掩码 ※
GATEWAY=“192.168.0.254“ 网关  ※
DNS1=“8.8.8.8“          dns服务器IP地址 ※
DNS2=8.8.4.4            备用dns服务器IP地址 ※
使用ifconfig命令查看网卡信息(提前安装net-tools软件包)
[root@localhost ~]# yum -y install net-tools
​
[root@localhost ~]# ifconfig
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.29  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::8d50:c4d5:97b0:9d64  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b0:cf:c8  txqueuelen 1000  (Ethernet)
        RX packets 3948  bytes 1811465 (1.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2538  bytes 459113 (448.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
#解释:
ens32:       网卡名称  ※
flags=4163: #标志
UP:         网卡处于活跃状态  ※
BROADCAST:  #支持广播
RUNNING:    #网线已接入
MULTICAST:  #支持组播
mtu 1500:   #最大传输单元(字节),表示此网卡一次能传输的最大数据包 ※
inet 192.168.0.29       IPV4地址 ※
netmask 255.255.255.0   子网掩码 ※
broadcast 192.168.0.255 #广播地址 ※
inet6 fe80::8d50:c4d5:97b0:9d64     #IPV6地址
prefixlen 64  scopeid 0x20<link>    #前缀 64 作用域 0x20
ether 00:0c:29:b0:cf:c8 #网卡MAC地址 ※
xqueuelen 1000          #网卡设置的传送队列长度
(Ethernet)              #网卡连接类型
RX packets 3948         接收正确的数据包 ※
bytes 1811465 (1.7 MiB) #接收的数据量与字节 ※  
RX errors 0  dropped 0  overruns 0  frame 0 接收到的错误包、丢弃的数据包数、由于速度过快而丢失的数据包、发生frame错误而丢失的数据包数 ※
TX packets 100          发送的正确的数据包数 ※
bytes 8116 (7.9 KiB)#发送的数据量、字节  ※
TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0 发送时产生错误的数据包数、丢弃的数据包数、由于速度过快而丢失的数据包数、发生carrier错误而丢失的数据包数、冲突信息包的数目 ※
​
#只查看指定的网卡
[root@localhost ~]# ifconfig ens32
​
​
lo: 本地回环网卡,不是物理网卡,通过软件虚拟出来的一个网卡,127.0.0.1,用于测试本机的联通性
[root@localhost ~]# ping 127.0.0.1
​
virbr0: 虚拟化的网络接口,通过软件技术虚拟出来的一个网卡,192.168.122.1,KVM虚拟化技术的时候

6. 查看主机名及修改主机名

  • /etc/hostname文件用于存放主机名

  • hostname 命令用于显示和设置主机名

  • 命令格式:hostname [新名称]

#查看主机名
[root@localhost ~]# hostname
localhost.localdomain
​
#查看主机名配置文件
[root@localhost ~]# cat /etc/hostname 
localhost.localdomain
​
#临时修改主机名(立刻生效,服务器重启以后失效)
[root@localhost ~]# hostname test
[root@localhost ~]# hostname
test
​
#exit/loguot登出系统
[root@localhost ~]# exit
[c:\~]$ ssh 192.168.0.50
[root@test ~]# 
​
#命令行永久修改主机名(立刻生效,不需要重启系统)
[root@localhost ~]# hostnamectl set-hostname test
[root@localhost ~]# exit
​
#支持大写
hostnamectl set-hostname --static

7. vi/vim文本编辑器

Vim是从 vi 发展出来的一个文本编辑器,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性

安装vim工具:yum -y install vim

vi/vim 共分为三种模式:命令模式、输入模式、底线命令模式(末行模式)

  • 命令模式:使用vim打开一个文件后,便进入了命令模式

  • 输入模式:在命令模式下按 a/i/o 就进入了输入模式

  • ESC,退出输入模式,切换到命令模式

  • 底线命令模式:在命令模式下按下:(英文冒号)就进入了底线命令模式

  • 命令格式:vim 文件名

    • 若文件不存在,则新创建文件并编辑

    • 若文件以存在,则打开文件并编辑

命令模式:刚刚启动 vi/vim,便进入了命令模式

  • i 切换到输入模式,在当前光标所在字符前插入

  • a 切换到输入模式,在当前光标所在字符后插入

  • o 切换到输入模式,在当前光标所在行下插入新行

  • x 在命令模式下删除当前光标所在的单字符

  • C 删除当前光标及光标后所有内容并进入输入模式

  • u 恢复上一次修改内容,一次恢复一个操作,可多次恢复,直到恢复本次操作初始状态为止

  • $ 将光标移动至行尾

  • 0(零) 将光标移动至行首

  • dd 删除一整行内容,配合数字可删除指定范围内的行

  • yy 复制当前行,配合数字可以同时复制多行

  • p 粘贴当前光标所在行下

  • r 替换字符,一次只能替换一个字符,可以替换多次

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

  • :w 保存

  • :q 退出

  • :wq 保存并退出

  • :x 保存并退出

  • ZZ 保存并退出

  • :q! 强制退出不保存

  • :wq! 强制保存并退出,适用于只读文件(没有写权限)

  • :set nu 以行号形式显示文件内容

  • :set nonu 取消行号显示

  • :行号 快速跳转到指定行

  • :%s 替换文件内容,g替换全文,默认只替换每一行匹配到的第一个关键字(数字s 指定替换的行)

  • G 快速跳转到文件的最后一行

  • gg 快速跳转到文件的行首

  • /关键词 搜索指定的字符,n从上向下快速定位关键字,N从下向上快速定位关键字

  • :nohl 取消高亮显示

[root@test ~]# vim /etc/services 

8. 修改网卡IP地址

网卡配置文件地址: /etc/NetworkManager/system-connections/ens160.nmconnection

  • ifconfig/ip a #用于显示和设置网卡的参数

  • systemctl restart NetworkManager #重启网络

#修改IP地址
[root@test ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection
[connection]
id=ens160
uuid=6b63bb3f-deda-326a-9c3b-a2aceeda205e
type=ethernet
autoconnect-priority=-999
interface-name=ens160
timestamp=1704888169
​
[ethernet]
​
[ipv4]
address1=192.168.16.5/24,192.168.16.254
dns=114.114.114.114;
method=manual
​
[ipv6]
addr-gen-mode=eui64
method=auto
​
[proxy]
​
~                    
#重启网络(IP地址发生改变,当前终端会断开)
[root@test ~]# systemctl restart NetworkManager
[c:\~]$ ssh 192.168.0.60
​
#关闭网卡并激活网卡
[root@localhost ~]# nmcli networking off ;; nmcli networking on
nmcli connection reload
#查看所有网卡信息
[root@test ~]# ip a 

使用命令修改网卡IP地址

提前安装命令补齐工具(安装后需要重新登录系统生效)
# yum -y install  bash-completion
​
​
# nmcli connection modify 网卡名 ipv4.method manual ipv4.addresses Ip地址/掩码 connection.autoconnect yes
​
​
解释:2
nmcli connection modify(修改) 
​
网卡名 ipv4.method(配置ipv4地址方法)
​
manual (手动配置)
​
ipv4.addresses(ipv4地址) 
​
Ip地址/掩码 connection.autoconnect yes(开机自动连接)

  • 激活网卡:nmcli connection up 网卡名

  • 关闭网卡:nmcli connection down 网卡名

  • 重启网卡:nmcli connection reload 网卡名

#使用命令修改网卡IPV地址
[root@test ~]# nmcli connection modify ens32 ipv4.method manual ipv4.addresses 192.168.0.50/24 connection.autoconnect yes
​
#激活网卡
[root@test ~]# nmcli connection up ens32
[c:\~]$ ssh 192.168.0.50

9. host命令

host用于将一个域名解析到一个IP地址

  • 补充:如果最小化安装没有该命令,安装:yum -y install bind-utils 软件包

[root@test ~]# host www.baidu.com
www.baidu.com has address 110.242.68.3
www.baidu.com has address 110.242.68.4
www.baidu.com is an alias for www.a.shifen.com.
www.baidu.com is an alias for www.a.shifen.com.

10. nslookup命令

nslookup用于查询域名解析是否正常,在网络故障时用来诊断网络问题

[root@test ~]# nslookup www.baidu.com
Server:     114.114.114.114
Address:    114.114.114.114#53
​
Non-authoritative answer:
Name:   www.baidu.com
Address: 110.242.68.4
Name:   www.baidu.com
Address: 110.242.68.3

11. alias别名管理

alias命令用于设置命令别名,用户可以使用alias自定义命令别名来简化命令的复杂度

  • .bashrc 文件存放命令别名

  • 命令格式:aliasi [别名]=[命令] #注意事项:等号(=)前后不能有空格

  • unalias 别名 #取消别名

#定义别名
[root@test ~]# alias lsnet='ls /etc/sysconfig/network-scripts/'
[root@test ~]# lsnet
[root@test ~]# alias myls='ls -ldh'
[root@test ~]# myls /opt
​
#查看当前系统可用命令别名
[root@test ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias lsnet='ls /etc/sysconfig/network-scripts/'
alias mv='mv -i'
alias myls='ls -ldh'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
​
#两条命令效果相同
[root@test ~]# ls -l hello
-rw-r--r--. 1 root root 426 3月  28 15:00 hello
[root@test ~]# ll hello
-rw-r--r--. 1 root root 426 3月  28 15:00 hello
​
[root@test ~]# which ls
alias ls='ls --color=auto'
    /usr/sbin/ls
[root@test ~]# /usr/sbin/ls
[root@test ~]# ls
​
#取消本次命令的别名功能“\”
[root@test ~]# \ls
​
#取消命令别名
[root@test ~]# unalias myls
[root@test ~]# myls
bash: myls: 未找到命令...
​
#定义别名不要跟系统命令发生冲突
[root@test ~]# alias ls=hostname
[root@test ~]# ls
test
​
#取消命令别名
[root@test ~]# unalias ls
[root@test ~]# alias
​
#重新定义别名
[root@test ~]# alias ls='ls --color=auto'
[root@test ~]# ls

12. history 管理命令历史

history命令用于显示历史记录和执行过的命令,登录系统时会读取.bash_history历史文件中记录下的命令,当退出时,会自动保存到历史命令文件,该命令单独使用时,仅显示历史命令

历史命令默认只能存储1000条,可以通过/etc/profile文件修改

  • 命令格式:history [-选项] [参数]

  • 常用选项:

    • -a 追加本次新执行的命令至历史命令文件中

    • -d 删除历史命令中指定的命令

    • -c 清空历史命令列表

  • 快捷操作:

    • !# 调用命令历史中第N条命令

    • !命令 调用历史命令中最近执行的命令

    • !! 重复执行上一条命令

#获取命令帮助
[root@test ~]# help history 
​
#查看历史命令
[root@test ~]# history
​
#查看记录历史命令文件
[root@test ~]# cat .bash_history 
​
#将历史命令同步至历史命令配置文件中
[root@test ~]# history -a
[root@test ~]# cat .bash_history 
​
#删除历史命令中655条命令历史
[root@test ~]# history -d 655
[root@test ~]# history -d 637
​
#清空缓存中所有历史命令
[root@test ~]# history -c
[root@test ~]# history
    1  history
​
#删除历史命令配置文件(该文件删除后系统会再次自动创建)
[root@test ~]# rm -rf .bash_history 
​
#快速调用历史命令中第1条
[root@test ~]# !1
[root@test ~]# !3
​
#调用历史命令中以cat开头的命令(只调用最近使用的cat历史命令)
[root@test ~]# !cat
​
#重复执行上一条命令
[root@test ~]# !!
​
#历史命令默认只能记录1000条,可以通过/etc/profile文件修改
[root@test ~]# vim /etc/profile
...
46 HISTSIZE=100

13. date日期时间管理

  • date命令用于显示或设置系统日期与时间

  • 命令格式:date [+格式符] #查看系统日期时间

  • 命令格式:date [-选项] #设置日期时间

  • 常用选项:-s 设置日期时间

  • 格式符:

    • +%Y 年份

    • +%B 月份

    • +%d 日

    • +%H 时

    • +%M 分

    • +%S 秒

    • +%F 年-月-日

    • +%X 时:分:秒

#显示系统日期与时间
[root@test ~]# date
2021年 03月 28日 星期日 17:08:34 CST
​
#只显示年分
[root@test ~]# date +%Y
2021
​
#只显示月份
[root@test ~]# date +%B
三月
​
#只显示几号
[root@test ~]# date +%d
28
​
#只显示小时
[root@test ~]# date +%H
17
​
#只显示分钟
[root@test ~]# date +%M
10
​
#只显示秒
[root@test ~]# date +%S
24
​
#显示年月日
[root@test ~]# date +%F
2021-03-28
​
#显示时分秒
[root@test ~]# date +%X
17时12分10秒
​
#显示年月日时分秒
[root@test ~]# date +%F%X
2021-03-2817时12分39秒
​
#可以自定义分隔符“-”
[root@test ~]# date +%F-%X
2021-03-28-17时13分38秒
​
[root@test ~]# date +%F:%X
2021-03-28:17时13分55秒
​
#修改系统年月日
[root@test ~]# date -s 2020-03-28
2020年 03月 28日 星期六 00:00:00 CST
​
#修改系统时分秒
[root@test ~]# date -s 17:16:00
2020年 03月 28日 星期六 17:16:00 CST
​
#修改年月日时分秒
[root@test ~]# date -s '2021-03-28 17:17:00'
2021年 03月 28日 星期日 17:17:00 CST
#解释:
''单引号:引用整体,屏蔽特殊符号的功能
""双引号:引用整体,不会屏蔽特殊符号的功能
​
#Linux的两种时钟
系统时钟:内核通过CPU的工作频率去计算的时间
硬件时钟:
​
#显示硬件时间
[root@test ~]# clock
2021年03月28日 星期日 17时23分42秒  -0.945549 秒
​
#显示并同步系统与硬件时钟
[root@test ~]# man hwclock
-s:把系统时间设置成与硬件时间相同
-w:把硬件时间设置成与系统时间相同
[root@test ~]# hwclock -w
[root@test ~]# date
2021年 03月 28日 星期日 17:27:18 CST
​
#cal显示日历
[root@test ~]# cal
      三月 2021     
日 一 二 三 四 五 六
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
​
#显示指定的全年月份
[root@test ~]# cal 2021

14. wc统计命令

  • wc 用于统计文件的字节数、行数,并将统计的结果输出到屏幕

  • 命令格式:wc [-选项] 文件名

  • 常用选项:

    • -c #统计字节数

    • -l #统计行数

[root@test ~]# wc /etc/passwd
43   87 2259 /etc/passwd
行数 单词 字节  文件名
​
#统计文件字节数
[root@test ~]# wc -c /etc/passwd
2259 /etc/passwd
​
#统计文件行数
[root@test ~]# wc -l /etc/passwd
43 /etc/passwd
​
[root@test ~]# wc -l /etc/fstab
11 /etc/fstab

15. 管道符

管道符 | 将命令的输出结果交给另外一条命令作为参数继续处理

查看/etc/passwd文件前6-10行内容,其余数据不要显示
​
[root@test ~]# head -10 /etc/passwd |tail -5
​
[root@test ~]# head -10 /etc/passwd |tail -5 |wc -l
5
​
root@test ~]# cat -n /etc/passwd |head -10|tail -5
     6  sync:x:5:0:sync:/sbin:/bin/sync
     7  shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
     8  halt:x:7:0:halt:/sbin:/sbin/halt
     9  mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    10  operator:x:11:0:operator:/root:/sbin/nologin
​
[root@test ~]# ifconfig ens32 |head -2
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.50  netmask 255.255.255.0  broadcast 192.168.0.255

16. grep文件内容过滤

  • grep用于查找文件中符合条件的字符串,它能利用正则表达式搜索文件中的字符串,并把匹配到的字符串的行打印出来

  • 命令格式:grep [-选项] "查找条件" 目标文件

  • 常用选项:

    • -n #以行号形式输出

    • -i #忽略字符串大小写

    • -v #排除匹配的内容

grep命令示例

#过滤包含root关键字的行
[root@localhost ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
​
#以行号形式过滤包含root关键字的行
[root@localhost ~]# grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
​
[root@localhost ~]# grep -n bash /etc/passwd
[root@localhost ~]# grep -n : /etc/passwd
​
#忽略大小写过滤
[root@localhost ~]# grep -i -n ssh /etc/passwd
38:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
​
#排除包含#号的行
[root@localhost ~]# grep -n -v '^#' /etc/fstab
​
#过滤以root开头的行
[root@localhost ~]# grep ^root /etc/passwd
​
#过滤以root结尾的行
[root@localhost ~]# grep -n 'root$' /etc/passwd
[root@localhost ~]# grep -n 'bash$' /etc/passwd
​
#语法错误示范
[root@localhost ~]# grep -n -v '^#' ^$  /etc/fstab
grep: ^$: 没有那个文件或目录
/etc/fstab:1:
/etc/fstab:9:/dev/mapper/centos-root /                       xfs     defaults        0 0
/etc/fstab:10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot                   xfs     defaults        0 0
/etc/fstab:11:/dev/mapper/centos-swap swap    
​
#语法错误示范
[root@localhost ~]# grep -n -v '^#' /etc/fstab | grep -v ^$
1:
9:/dev/mapper/centos-root /                       xfs     defaults        0 0
10:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot                   xfs     defaults        0 0
11:/dev/mapper/centos-swap swap                    swap    defaults        0 0
​
#正确语法
[root@localhost ~]# grep  -v '^#' /etc/fstab | grep -v ^$ -n
2:/dev/mapper/centos-root /                       xfs     defaults        0 0
3:UUID=ae55ec6b-973b-498e-a366-f35e14b3d153 /boot                   xfs     defaults        0 0
4:/dev/mapper/centos-swap swap                    swap    defaults        0 0
​
#显示该文件内有效配置的行
[root@localhost ~]# grep -v '^#' /etc/login.defs | grep -v ^$ -n | wc -l

shell四剑客:运维命令

  • grep:文件内容过滤

  • find:文件或目录查找(查找一个文件在系统中存放路径)

  • which命令只能用于查找程序文件,find不能查找程序文件

  • sed:文本编辑器(跟vim类似,sed是非交互)

  • awk:跟grep类似,文件内容过滤(awk支持列过滤)

17. 重定向操作

重定向操作:将前面命令的输出结果,写入到其他的文本文件中

  • 重定向的表示符号

    • > 覆盖重定向,只收集正确的输出内容

    • >> 追加重定向输出,只收集正确的输出内容

    • << 输入重定向

    • 2> 只收集错误的输出结果(覆盖)

    • 2>> 只收集错误的输出结果(追加)

    • &> 正确错误都收集(覆盖)

    • &>> 正确错误都收集(追加)

#将命令的输出结果以覆盖的方式重定向到文件中,(>附带创建文件功能)
[root@test ~]# ifconfig ens32 |head -2 > /opt/ens32.bak
ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.50  netmask 255.255.255.0  broadcast 192.168.0.255
​
[root@test ~]# cat /etc/hostname > /opt/ens32.bak 
[root@test ~]# cat /opt/ens32.bak 
test
​
[root@test ~]# free -h > /opt/free.bak
[root@test ~]# cat /opt/free.bak 
              total        used        free      shared  buff/cache   available
Mem:           972M        414M        123M         15M        435M        336M
Swap:          2.0G          0B        2.0G
​
#将命令的输出结果以追加的方式重定向到文件中
[root@test ~]# cat /etc/hostname >> /opt/free.bak 
[root@test ~]# cat /opt/free.bak 
​
#重定向输入(>覆盖)以EOF开始,以EOF结束,中间写入内容
[root@test opt]# cat > xxxx.txt <<EOF
hello
Linux
EOF
​
​
#追加重定向输入(>>追加)
[root@test opt]# cat >> xxxx.txt <<EOF
> 你好
> EOF
​
#“>”只收集正确的输出结果,不收集错误的输出结果
[root@test ~]# ls xxooooxx > /opt/xx.txt
ls: 无法访问xxooooxx: 没有那个文件或目录
​
#“2>”只收集错误的输出结果,不收集正确的输出结果
[root@test ~]# ls xxooooxx 2> /opt/xx.txt
[root@test ~]# cat /opt/xx.txt 
ls: 无法访问xxooooxx: 没有那个文件或目录
​
#“2>”以覆盖的方式将输出结果重定向到文件中
[root@test ~]# cat /etc/abc 2> /opt/ens32.bak 
[root@test ~]# cat /opt/ens32.bak 
cat: /etc/abc: 没有那个文件或目录
​
#“2>>”以追加的方式将输出结果重定向到文件中
[root@test ~]# ls /etc/abcd 2>> /opt/ens32.bak 
[root@test ~]# cat /opt/ens32.bak 
cat: /etc/abc: 没有那个文件或目录
ls: 无法访问/etc/abcd: 没有那个文件或目录
​
#“&>”以覆盖的方式将正确输出与错误输出重定向到文件中
[root@test ~]# lscat &> /opt/abc.txt
[root@test ~]# cat /opt/abc.txt 
​
[root@test ~]# ls /etc/passwd &> /opt/pass.bak
[root@test ~]# cat /opt/pass.bak 
​
[root@test ~]# free -h &> /opt/pass.bak 
[root@test ~]# cat /opt/pass.bak 
​
#“&>”以追加的方式将正确输出与错误输出重定向到文件中
[root@test ~]# ifconfig ens32 | head -2 &>> /opt/pass.bak 
[root@test ~]# cat /opt/pass.bak 
​
#以覆盖方式将正确输出与错误输出重定向到不同文件中
[root@test ~]# ll -d /root/  bcd >a.txt 2>b.txt
[root@test ~]# cat a.txt 
dr-xr-x---. 24 root root 4096 3月  28 18:07 /root/
[root@test ~]# cat b.txt 
ls: 无法访问bcd: 没有那个文件或目录

18. echo命令

echo命令用于输出指定的字符串和变量

  • 命令格式:echo [-选项] [参数]

[root@test ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
​
[root@test ~]# echo xxoo
xxoo
​
[root@test ~]# echo abc
abc
​
[root@test ~]# echo 男人好难
男人好难
​
[root@test ~]# echo 123
123
​
[root@test ~]# cat /etc/hostname 
test
​
[root@test ~]# echo localhost > /etc/hostname
[root@test ~]# cat /etc/hostname 
localhost



Comment