Linux基础——常见命令归纳(持续更新中)

这里写目录标题

一、Linux目录结构

在这里插入图片描述

目录名称对应意义
/root系统管理员的家目录
/home存放普通用户的家目录,每个用户都有一个自己的目录,目录名是以用户名命名的
/binbinary的缩写,这个目录存放着最经常使用的命令
/sbin存放的是系统管理员使用的系统管理程序,只有root权限才能执行
/boot存放的是启动linux时使用的一些核心文件,包括一些连接文件和镜像文件,自己的安装别放这里
/dev存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,类似于windows的设备管理器,把所有的硬件用文件的形式存储
/etc系统配置文件存放的目录
/usrusr(不是 user),全称为 Unix Software Resource(Unix操作系统软件资源) 存放的是用户的应用程序和文件,类似于windows的program files目录
/usr/local另一个给主机额外安装软件的目录,一般是通过编译源码方式安装的程序,用户自行安装的软件所存放的目录
/media、/mnt、/misclinux会自动识别一些设备,u盘,光驱等,会把识别的设备挂载到这个目录下,为了让用户临时挂载别的文件系统的,将外部的存储挂载在/mnt/上
/opt第三方应用软件,给主机额外安装软件所存放的目录
/var用于存储动态数据,将经常修改的目录放在这个目录下,包括各种日志文件
/lib系统开机所需要最基本的动态连接共享库,以及/bin与/sbin下面的命令要调用的函数
/lost+found一般情况下是空的,系统非法关机后,这里就存放了一些文件(类似于回收站)
/tmp用来存放一些临时文件的

linux中/usr和/opt的区别
linux中/opt目录用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software
linux中/usr为系统级的目录,可以理解为C:/Windows/
linux中/usr下的/local目录为用户级的程序目录,可以理解为C:/Progrem Files/

二、Linux常见工作命令

1. echo 用于在终端输出字符串或变量提取后的值

格式为:echo [选项] [字符串 | $变量]
选项:

参数含义
-n不输出结尾的换行符
-e “\a”发出警告音
-e “\b”删除前面的一个字符
-e “\c”结尾不加换行符
-e “\f”换行,光标扔停留在原来的坐标位置
-e “\n”换行,光标移至行首
-e “\r”光标移至行首,但不换行
-E禁止反斜杠转移,与-e参数功能相反

例子:
输出一段字符串

[root@linuxprobe ~]# echo Linuxprobe.Com
Linuxprobe.Com

输出变量提取后的值:

[root@linuxcool ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

对内容进行转义,不让$符号的提取变量值功能生效:

[root@linuxcool ~]# echo \$PATH
$PATH

输出信息中删除某个字符,注意看数字3消失了:

[root@linuxcool ~]# echo -e "123\b456" 
12456

结合输出重定向符,将字符串信息导入文件中:

[root@linuxcool ~]# echo "It is a test" > linuxcool

2. date 用于显示及设置系统的时间或日期

[root@linuxprobe ~]# date
[root@linuxprobe ~]# Sun Mar 13 18:01:49     2022
[root@linuxprobe ~]# date +"%Y-%m-%d %H:%M:%S" #当前时间

设置时间

修改年月日:date -s 月/日/年,比如date -s 09/20/2023,修改系统时间为2023年9月20号
修改具体时间:date -s 14:22:30,格式时分秒
保存CMOS:[root@localhost ~]# clock -w
保存BIOS:[root@localhost ~]# hwclock -w

注:CMOS时间是CMOS芯片保存的时间。系统启动时,操作系统将从CMOS读出时间记录为系统时间,同时操作系统也会自动每隔一段时间将系统时间写入CMOS中。如果使用date命令修改系统时间后马上重启电脑,操作系统还没有将系统时间同步到CMOS,这样开机后就还是没有修改前的时间了,所以为了保险起见,最还还是手动使用命令 clock 将系统时间同步到CMOS中。而BIOS指的是硬件时间

明天的时间

[root@linuxprobe ~]# date -d next-day +"%Y-%m-%d" 

修改时区

[root@linuxprobe ~]# date -R   查看时区
  Wed, 20 Sep 2023 11:14:36 +0800
  
rm -rf /etc/localtime 
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime   修改时区为上海

3. reboot 用于重启系统

[root@linuxprobe ~]# reboot 与 shutdown -r now  功能类似

4. poweroff 关机并关闭电源

[root@linuxprobe ~]# poweroff

5. wget 用于在终端中下载网络文件

格式为:wget [选项] 下载地址
选项及含义

选项含义
-V显示wget的版本后退出
-O下载文件保存为别的文件名
-P指定目录 下载地址
-c继续执行上次终端的任务
-b启动后转入后台
-h打印语法帮助

①指定目录下载

[root@linuxprobe ~]# wget -P /opt  http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz 

②下载并以不同的文件名保存

[root@linuxcool ~]# wget -O test.zip http://www.Linuxcool.com

③使用wget断点续传

[root@linuxcool ~]# wget -c http://www.linuxcool.com/test.zip

6. ps 用于查看系统中的进程状态

格式:ps [选项]
①把所有进程显示出来:

[root@linuxcool ~]# ps aux
[root@linuxcool ~]# ps -A

②把所有进程显示出来,并输出到ps.txt文件:

[root@linuxcool ~]# ps -aux > ps.txt

③查找特定进程信息:

[root@linuxcool ~]# ps -ef | grep ssh
 root       1303      1  0 Apr17 ?        00:00:00 /usr/sbin/sshd
 root       3260   3087  0 Apr17 ?        00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME\_SHELL\_SESSION_MODE=classic gnome-session --session gnome-classic"
 root      24174  19508  0 11:39 pts/0    00:00:00 grep --color=auto ssh
#每列含义
UID      启动进程的用户
PID      进程的进程号
PPID     父进程进程号
C        cpu使用率
STIME    进程启动时的系统时间
TTY      进程启动时终端设备
TIME     运行进程需要的累积CPU时间
CMD      启动程序名称或命令
Linux 系统中时刻运行着许多进程,如果能够合理地管理它们,则可以优化系统的性能。在Linux 系统中,有 5 种常见的进程状态,分别为运行、中断、不可中断、僵死与停止,其各自
含义如下所示。
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
D(不可中断):进程不响应系统异步信号,即便用 kill 命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用 wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。

 [root@linuxcool ~]# ps -aux | grep ssh
 root       1303  0.0  0.0  82468  1204 ?        Ss   Apr17   0:00 /usr/sbin/sshd
 root       3260  0.0  0.0  52864   572 ?        Ss   Apr17   0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME\_SHELL\_SESSION_MODE=classic gnome-session --session gnome-classic"
 root      24188  0.0  0.0 112652   956 pts/0    S+   11:39   0:00 grep --color=auto ssh

④显示指定用户信息:

[root@linuxcool ~]# ps -u root

⑤按 CPU 资源的使用量对进程进行排序:

[root@linuxcool ~]# ps aux | sort -nk 3   指定第三列正向顺序排序

⑥按内存资源的使用量对进程进行排序:

[root@linuxcool ~]# ps aux | sort -rnk 4    指定第四列反向顺序排序

sp: sort 排序命令

sort 默认是按ascall码顺序排序
sort -n 按照数字正向顺序排序
sort -k 指定列正向排序
sort -r 反向排序
sort -u 去重

7. top 实时显示进程动态

格式为:top[选项]
①显示进程信息:

[root@linuxcool ~]# top

②显示完整的进程信息:

[root@linuxcool ~]# top -c

③以批处理模式显示程序信息:

[root@linuxcool ~]# top -b

④以累积模式显示程序信息:

[root@linuxcool ~]# top -s

⑤设置信息更新次数:

[root@linuxcool ~]# top -n 2

在这里插入图片描述

第 1 行:系统当前时间、 运行时间、 登录终端数、系统负载(三个数值分别为 1 分钟、5 分钟、15 分钟内的平均值,数值越小意味着负载越低)。
第 2 行: 进程总数、 运行中的进程数、睡眠中的进程数、 停止的进程数、 僵死的进程数。
第 3 行:用户占用资源百分比、系统内核占用资源百分比、 改变过优先级的进程资源百分比、 空闲的资源百分比等、 等待输入输出的CPU时间百分比、 硬中断(Hardware IRQ)占用CPU的百分比、 软中断(Software Interrupts)占用CPU的百分比。
第 4 行:物理内存总量、内存使用量、 内存空闲量、作为内核缓存的内存量。
第 5 行:虚拟内存总量、虚拟内存使用量、 虚拟内存空闲量、 已被提前加载的内存量。

8.pidof 查询某个进程的进程PID

[root@localhost ~]# pidof crond
1060

9.kill 杀死PID进程

HUP 1 终端断线

INT 2 中断(同 Ctrl + C)

QUIT 3 退出(同 Ctrl + \)

TERM 15 终止

KILL 9 强制终止

CONT 18 继续(与STOP相反, fg/bg命令)

STOP 19 暂停(同 Ctrl + Z)

[root@localhost ~]# kill -l       列出信号,一般用-9,-15比较多
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
一般步骤是:
一、利用ps查找进程ID
[root@localhost ~]# ps aux
root       6448  0.0  0.1 155324  1872 pts/0    R+   16:59   0:00 ps aux
二、利用kill杀死该进程
[root@localhost ~]# kill -9 6448
[root@localhost ~]# kill -s 9 6448    这样也行
sp:杀死指定用户的所有进程
[root@linuxcool ~]# kill -9 $(ps -ef | grep peidalinux)

10.rpm(rpm包离线安装\本地安装)

常见命令

直接安装软件包,-i 安装 -v 执行过程 -h安装软件包时列出标记

[root@linuxcool ~]# rpm -ivh httpd-2.2.15-15.el6.centos.1.i686.rpm

忽略报错,强制安装

[root@linuxcool ~]# rpm --force -ivh  文件名.rpm

列出所有安装过的包:

[root@linuxcool ~]# rpm -qa 

查询rpm包中的文件安装的位置:

[root@linuxcool ~]# rpm -ql python

卸载rpm包:

[root@linuxcool ~]# rpm -e 文件名.rpm 

升级软件包:

[root@linuxcool ~]# rpm -U 文件名.rpm

11.yum 安装(rpm包在线安装)

配置yum源分离线和在线

离线yum源(光盘yum源):
一、挂载光盘

[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
查看挂载情况
[root@localhost yum.repos.d]# df -hT /mnt/cdrom/
文件系统       类型     容量  已用  可用 已用% 挂载点
/dev/sr0       iso9660  4.2G  4.2G     0  100% /mnt/cdrom

二、让网络yum源失效

[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv CentOS*  bak
[root@localhost yum.repos.d]# cp ./bak/CentOS-Media.repo   ./

三、编辑文件CentOS-Media.repo

[root@localhost yum.repos.d]# vim CentOS-Media.repo
# CentOS-Media.repo
#
#  This repo can be used with mounted DVD media, verify the mount point for
#  CentOS-7.  You can use this repo and yum to install items directly off the
#  DVD ISO that we release.
#
# To use this repo, put in your DVD and use it with the other repos too:
#  yum --enablerepo=c7-media [command]
#  
# or for ONLY the media repo, do this:
#
#  yum --disablerepo=\* --enablerepo=c7-media [command]

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=0		#用来检查GPG-KEY,0为不检查,1为检查
enabled=1		#是否用该yum源,0为禁用,1为使用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

~                                                                               
~                                                                                                                                                  
"CentOS-Media.repo" 20L, 563C                                 17,1         全部

四、清除yum缓存,测试yum源配置

[root@localhost yum.repos.d]# yum clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: c7-media
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors

五、测试存在软件包即成功

[root@localhost yum.repos.d]# yum list
已加载插件:fastestmirror, langpacks
c7-media                                                 | 3.6 kB     00:00     
(1/2): c7-media/group_gz                                   | 156 kB   00:00     
(2/2): c7-media/primary_db                                 | 3.1 MB   00:00     
Determining fastest mirrors
已安装的软件包
GConf2.x86_64                           3.2.6-8.el7                    @anaconda
GeoIP.x86_64                            1.5.0-11.el7                   @anaconda
ModemManager.x86_64                     1.6.0-2.el7                    @anaconda
ModemManager-glib.x86_64                1.6.0-2.el7                    @anaconda
NetworkManager.x86_64                   1:1.8.0-9.el7                  @anaconda
NetworkManager-adsl.x86_64              1:1.8.0-9.el7                  @anaconda
NetworkManager-glib.x86_64              1:1.8.0-9.el7                  @anaconda
NetworkManager-libnm.x86_64             1:1.8.0-9.el7                  @anaconda
NetworkManager-libreswan.x86_64         1.2.4-2.el7                    @anaconda
NetworkManager-libreswan-gnome.x86_64   1.2.4-2.el7                    @anaconda
NetworkManager-ppp.x86_64               1:1.8.0-9.el7                  @anaconda

在线yum源(网络yum源):
一、将本地repo文件全部放到bak目录下

[root@localhost ~]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv CentOS*  bak
[root@localhost yum.repos.d]# cp ./bak/CentOS-Media.repo   ./

二、下载阿里yum源

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

三、运行yum clean all 清除缓存,运行 yum makecache 生成新的缓存

[root@localhost yum.repos.d]# yum clean all #清空缓存
已加载插件:fastestmirror, langpacks
正在清理软件源: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum makecache #生成新的缓存 
已加载插件:fastestmirror, langpacks
^Chttp://mirrors.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#56 - "Callback aborted"
正在尝试其它镜像。
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的名称或服务"
正在尝试其它镜像。
base                                                            | 3.6 kB  00:00:00     
extras                                                          | 2.9 kB  00:00:00     
updates                                                         | 2.9 kB  00:00:00     
(1/10): base/7/x86_64/group_gz                                  | 153 kB  00:00:00     
(2/10): base/7/x86_64/primary_db                                | 6.1 MB  00:00:03     
(3/10): extras/7/x86_64/filelists_db                            | 226 kB  00:00:00     
(4/10): extras/7/x86_64/other_db                                | 134 kB  00:00:00     
(5/10): extras/7/x86_64/primary_db                              | 225 kB  00:00:00     
(6/10): base/7/x86_64/filelists_db                              | 7.2 MB  00:00:05     
(7/10): base/7/x86_64/other_db                                  | 2.6 MB  00:00:01     
(8/10): updates/7/x86_64/filelists_db                           | 3.9 MB  00:00:02     
(9/10): updates/7/x86_64/other_db                               | 516 kB  00:00:00     
(10/10): updates/7/x86_64/primary_db                            | 6.5 MB  00:00:03     
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
元数据缓存已建立

四、安装EPEL源

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
--2023-09-20 17:40:46--  http://mirrors.aliyun.com/repo/epel-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 119.96.90.237, 111.170.130.234, 111.123.40.238, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|119.96.90.237|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:664 [application/octet-stream]
正在保存至: “/etc/yum.repos.d/epel-7.repo”

100%[===============================================================================================================>] 664         --.-K/s 用时 0s

2023-09-20 17:40:46 (83.7 MB/s) - 已保存 “/etc/yum.repos.d/epel-7.repo” [664/664])

五、运行yum clean all 清除缓存,运行 yum makecache 生成新的缓存

其他常见命令:
自动搜索最快镜像插件:

[root@linuxcool ~]# yum install yum-fastestmirror

安装yum图形窗口插件:

[root@linuxcool ~]# yum install yumex

安装软件:

[root@linuxcool ~]# yum -y install 软件名

三、系统状态检测命令

1.ifconfig 或者 ip addr 获取网卡配置和网络状态等信息

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.133.155  netmask 255.255.255.0  broadcast 192.168.133.255
        inet6 fe80::69d7:512d:91be:7aa3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:7a:5b  txqueuelen 1000  (Ethernet)
        RX packets 49864  bytes 51440113 (49.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8042  bytes 4276346 (4.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 568  bytes 49184 (48.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 568  bytes 49184 (48.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:da:58:90  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

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:0d:7a:5b brd ff:ff:ff:ff:ff:ff
    inet 192.168.133.155/24 brd 192.168.133.255 scope global noprefixroute dynamic ens33
       valid_lft 1748sec preferred_lft 1748sec
    inet6 fe80::69d7:512d:91be:7aa3/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:da:58:90 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
    link/ether 52:54:00:da:58:90 brd ff:ff:ff:ff:ff:ff

常见命令:
启动关闭指定网卡:

[root@linuxcool ~]# ifconfig eth0 down
[root@linuxcool ~]# ifconfig eth0 up
等同于
[root@linuxcool ~]# ifup eth0
[root@linuxcool ~]# ifdown eth0

为网卡配置ipv6地址

[root@linuxcool ~]# ifconfig eth0 add 33ffe:3240:800:1005::2/64
[root@linuxcool ~]# ifconfig eth0 del 33ffe:3240:800:1005::2/64

修改MAC地址

[root@linuxcool ~]# ifconfig eth0 down
[root@linuxcool ~]# ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE
[root@linuxcool ~]# ifconfig eth0 up
[root@linuxcool ~]# ifconfig eth1 hw ether 00:1D:1C:1D:1E 
[root@linuxcool ~]# ifconfig eth1 up

2.uname 查看系统内核和系统版本

参数含义
-a显示系统所有相关信息
-m显示计算机硬件架构
-n显示主机名称
-r显示内核发行版本号
-s显示内核名称
-v显示内核版本
-p显示主机处理器类型
-o显示主机处理器类型
-i显示硬件平台
查看当前系统版本信息
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
查看当前系统硬件架构
[root@localhost ~]# uname -i
x86_64

3.uptime 用于查看系统负载情况

参数含义
-p以漂亮的格式显示机器正常运行的时间
-s系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
-h系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss
[root@localhost ~]# uptime -p
up 7 hours, 26 minutes
[root@localhost ~]# uptime -s
2023-09-21 01:27:53
[root@localhost ~]# uptime -h

Usage:
 uptime [options]

Options:
 -p, --pretty   show uptime in pretty format
 -h, --help     display this help and exit
 -s, --since    system up since
 -V, --version  output version information and exit

For more details see uptime(1).
[root@localhost ~]# uptime
 08:57:59 up  7:30,  2 users,  load average: 0.00, 0.01, 0.05
 #显示当前系统时间、系统已运行时间、启用终端数量以及平均负载值等信息。平均负载值
 指的是系统在最近 1 分钟、5 分钟、15 分钟内的压力情况(下面加粗的信息部分);负载值
 越低越好,尽量不要长期超过 1,在生产环境中不要超过 5

4.free 显示当前系统内存使用情况

参数含义
-b以Byte显示内存使用情况
-k以kb显示内存使用情况
-m以Mb显示内存使用情况
-g以Gb显示内存使用情况
-s持续显示内存情况
-t显示内存使用总和
-h人性化显示

10s显示一次内存使用情况

[root@localhost ~]# free -hs 10
              total        used        free      shared  buff/cache   available
Mem:           974M        247M        137M        7.8M        589M        523M
Swap:          2.0G          0B        2.0G

[root@localhost ~]# free -th         #显示总和
              total        used        free      shared  buff/cache   available
Mem:           974M        246M        137M        7.8M        589M        523M
Swap:          2.0G          0B        2.0G
Total:         3.0G        246M        2.1G

5.who查看当前登录系统账号的终端信息

常见实例:

[root@localhost ~]# who
root     tty1         2023-08-24 12:04
root     pts/1        2023-09-21 08:50 (192.168.133.1)
[root@localhost ~]# who -b       #打印系统最近启动时间
         系统引导 2023-08-24 10:18
[root@localhost ~]# who -a      #打印全面信息
           系统引导 2023-08-24 10:18
           运行级别 3 2023-08-24 10:18
root     + tty1         2023-08-24 12:04 00:35        1112
           pts/0        2023-09-21 08:51              6277 id=ts/0  终端=0 退出=0
root     + pts/1        2023-09-21 08:50   .         10060 (192.168.133.1)
           pts/2        2023-09-20 18:14              5071 id=ts/2  终端=0 退出=0
[root@localhost ~]# whoami       #查看当前用户
root

6.w 显示已登录用户

显示用户从哪儿登录

[root@localhost ~]# w -f
 09:30:45 up  8:02,  2 users,  load average: 0.01, 0.02, 0.05
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1      248月23 41:09   1.30s  1.30s -bash
root     pts/1     08:50    5.00s  0.29s  0.01s w -f

踢出终端用户

[root@linuxcool ~]# w
root     pts/0        2010-10-28 09:36 (192.168.1.236)
root     pts/1        2010-10-28 09:40 (192.168.1.27)
[root@linuxcool ~]# pkill -kill -t pts/1  #踢出ip为192.168.1.27

7.last 查看所有系统的登录记录

常见实例:
显示近期用户或终端的登录情况:

[root@linuxprobe ~]# last

简略显示,并指定显示的个数:

[root@linuxcool ~]# last -n 5 -R

显示最后一列显示主机IP地址:

[root@linuxcool ~]# last -n 5 -a -i

8.history 查看历史执行过的命令

历史命令会被保存到用户家目录中的.bash_history 文件中。Linux 系统中以点(.)开头的文件均代表隐藏文件,这些文件大多数为系统服务文件,可以用 cat 命令查看其文件内容

[root@linuxprobe ~]# cat ~/.bash_history

要清空当前用户在本机上执行的 Linux 命令历史记录信息,可执行如下命令:

[root@linuxprobe ~]# history -c

将当前history的缓存命令写入文件中

[root@linuxcool ~]# history -w

将当前Shell会话的历史命令追加到命令历史文件中:

[root@linuxcool ~]# history -a  

9.df 显示磁盘空间使用情况

[root@localhost ~]# df
文件系统                   1K-块    已用     可用 已用% 挂载点
/dev/mapper/centos-root 49250820 2152344 47098476    5% /
devtmpfs                  486756       0   486756    0% /dev
tmpfs                     498988       0   498988    0% /dev/shm
tmpfs                     498988   14180   484808    3% /run
tmpfs                     498988       0   498988    0% /sys/fs/cgroup
/dev/sda1                1038336  139516   898820   14% /boot
tmpfs                      99800       0    99800    0% /run/user/0
/dev/sr0                 4364408 4364408        0  100% /mnt/cdrom

更人性化的阅读方式:

[root@localhost ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   47G  2.1G   45G    5% /
devtmpfs                 476M     0  476M    0% /dev
tmpfs                    488M     0  488M    0% /dev/shm
tmpfs                    488M   14M  474M    3% /run
tmpfs                    488M     0  488M    0% /sys/fs/cgroup
/dev/sda1               1014M  137M  878M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0
/dev/sr0                 4.2G  4.2G     0  100% /mnt/cdrom

10.dh 统计文件大小,目录则取总用量

已易读的方式展示出目录及子目录下的文件或者目录的大小

[root@localhost etc]# du -h ./dhcp/
4.0K    ./dhcp/dhclient-exit-hooks.d
4.0K    ./dhcp/dhclient.d
8.0K    ./dhcp/

只显示指定目录的直接子目录和文件

[root@linuxcool ~]# du -hc --max-depth=1   ./dhcp

指定文件所占大小

[root@localhost etc]# du -h adjtime
4.0K    adjtime

sp:du 与 df 的区别,du是统计文件大小的,df是统计磁盘大小的

11.lsblk 查询系统的磁盘(树状图的形式)

[root@localhost etc]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   50G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   49G  0 part
  ├─centos-root 253:0    0   47G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sr0              11:0    1  4.2G  0 rom  /mnt/cdrom

四、文本编辑命令

1.cat 查看文本文件

常用实例:
查看文件的内容:

[root@linuxcool ~]# cat 1.txt

查看文件的内容,并显示行数编号:

[root@linuxcool ~]# cat -n 1.txt

查看文件的内容,并添加行数编号后输出到另外一个文件中:

[root@linuxcool ~]# cat -n 1.log > 2.log      #>表示覆盖,>>表示追加

清空文件内容

[root@localhost /]# cat /dev/null  >  /root/1.txt

持续写入文件内容,碰到EOF符后结束并保存:

[root@localhost /]# cat > 1.txt << EOF
> 1
> 2
> EOF

2.more 查看纯文本文件(内容较多的,无法往上翻,显示进度条)

常用实例:
显示文件file的内容,显示之前先清屏,附已显示的百分比:

[root@localhost /]# more -dc file

显示文件file的内容,每10行显示一次,而且在显示之前先清屏:

[root@localhost /]# more -c -10 file

显示文件file的内容,每5行显示一次,而且在显示之后再清屏:

[root@localhost /]# more -c -5 file

3.less 查看纯文本文件(可上下翻阅)

4.head 查看纯文本的前几行

显示文件名信息,并显示文件前两行:

[root@localhost ~]# head -v -n 3 /var/log/messages
==> /var/log/messages <==
Sep 20 11:08:01 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="1047" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Sep 20 11:10:01 localhost systemd: Started Session 26 of user root.
Sep 20 11:10:01 localhost systemd: Starting Session 26 of user root.

显示文件前5个字符:

[root@localhost ~]# head -c 5 /var/log/messages
Sep 2

5.tail 查看纯文本的末尾几行或者持续刷新内容

常用实例:
显示文件file的最后10行:

[root@localhost ~]# tail /var/log/messages
Sep 21 14:41:03 localhost systemd: Starting Session 87 of user root.
Sep 21 14:41:05 localhost dbus[758]: [system] Activating service name='org.freedesktop.problems' (using servicehelper)
Sep 21 14:41:05 localhost dbus[758]: [system] Successfully activated service 'org.freedesktop.problems'
Sep 21 14:42:43 localhost chronyd[760]: Selected source 202.112.29.82
Sep 21 14:42:43 localhost chronyd[760]: System clock wrong by 1.653876 seconds, adjustment started
Sep 21 14:43:45 localhost chronyd[760]: Selected source 202.112.31.197
Sep 21 14:43:48 localhost chronyd[760]: Source 193.182.111.143 replaced with 84.16.67.12
Sep 21 14:44:51 localhost chronyd[760]: Selected source 202.112.29.82
Sep 21 14:50:01 localhost systemd: Started Session 88 of user root.
Sep 21 14:50:01 localhost systemd: Starting Session 88 of user root.

显示文件message倒数20行的内容:

[root@localhost ~]# tail -n 20  /var/log/messages

显示文件message倒数10个字符的内容:

[root@localhost ~]# tail -c 10 /var/log/messages
ser root.

动态文件总是显示后10行:

[root@localhost ~]#  tail -f 10 file
[root@localhost ~]#  tail -100f file #另外一种写法

6.tr用于替换文本文件中的字符

常见用例:
大小写转换

[root@localhost ~]# echo “hello” | tr [a-z] [A-Z];
“HELLO”

[root@localhost ~]# cat 1.txt
hhhhhh
[root@localhost ~]# tr [a-z] [A-Z] < 1.txt
HHHHHH

删除连续字符 -s删除重复出现的字符,只保留一个

[root@localhost ~]# echo "hhhhhh" | tr -s [:alnum:]
h

[root@localhost ~]# cat 1.txt
hhhhhh
[root@localhost ~]# tr -s h  < 1.txt      #对单个字符重复的删除
h

删除数字

[root@localhost ~]# echo "hello 123 world 45345" |tr -d '0-9'
hello  world

只保留数字 -c表示补集 -d删除所有字符

[root@localhost ~]# echo "hello 123 world 45345" |tr -dc  '0-9'
12345345

7.shell编程三剑客:sed\awk\grep

sed 处理编辑文本文件

tr类似于sed命令,但是比sed简单,所以tr能实现的功能,sed都能实现。
读取文本,内容编辑,输出文本,sed主要依赖于正则表达式
处理过程:
①读取:从文件、实时输入、管道符读取的内容存储到临时的缓冲区(模式空间)
②执行:所有sed命令都会按照顺序依次在模式空间执行
③显示:发送修改后的内容到输出流。在发送数据后,模式空间将会被清空。
在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完
命令格式:
sed [选项] ‘操作’ 参数
常见的 sed 命令选项主要包含以下几种

参数含义
-e表示用指定命令或脚本来处理输入的文本文件
-f表示用指定的脚本文件来处理输入的文本文件
-h或–help 显示帮助
-n表示显示处理后的结果
-i直接编辑文本文件
-i.bak直接编辑文本文件
-r,-E直接编辑文本文件
-s将多个文件视为独立文件,而不是单个连续的长文件流

常用的sed命令操作
“操作”用于指定对文件操作的动作行为,也就是 sed 的命令

a增加,在当前行下面增加一行指定内容
c替换,将选定行替换为指定内容
d删除,删除选定的行
i插入,在选定行上面插入一行指定内容
p打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容
s替换,替换指定字符
y字符转换

常用实例:
打印文本内容: p

[root@localhost ~]# sed -n 'p' 1.txt
hhhhhh
ada2dafvagagag
ggggaaaaabbbbbcccc

[root@localhost ~]# cat 1.txt
hhhhhh
ada2dafvagagag
ggggaaaaabbbbbcccc

打印第三行 3p

[root@localhost ~]# sed -n '3p' 1.txt
ggggaaaaabbbbbcccc
[root@localhost ~]# head -n 3 1.txt
hhhhhh
ada2dafvagagag
ggggaaaaabbbbbcccc

打印第一行到第三行 1,3p

[root@localhost ~]# head -n 3 1.txt
hhhhhh
ada2dafvagagag
ggggaaaaabbbbbcccc
[root@localhost ~]# sed -n '1,3p' 1.txt
hhhhhh
ada2dafvagagag
ggggaaaaabbbbbcccc

打印所有奇数行 p;n

[root@localhost ~]# cat -n 1.txt
     1  hhhhhh
     2  ada2dafvagagag
     3  ggggaaaaabbbbbcccc
[root@localhost ~]# sed -n 'p;n' 1.txt
hhhhhh
ggggaaaaabbbbbcccc

打印所有偶数行 n;p

[root@localhost ~]# cat -n 1.txt
     1  hhhhhh
     2  ada2dafvagagag
     3  ggggaaaaabbbbbcccc
[root@localhost ~]# sed -n 'n;p' 1.txt
ada2dafvagagag

输出第16行至文件尾之间的偶数行,16开始算1,相当于
16-1,17-2,18-3,19-4,20-5,21-6,22-7,则输出17,19,21
16,${n;p}

[root@localhost ~]# cat -n 1.txt
     1  1
     2  1
     3  1
     4  1
     5  1
     6  1
     7  1
     8  1
     9  1
    10  1
    11  1
    12  1
    13  1
    14  1
    15  1
    16  1
    17  2
    18  2
    19  2
    20  2
    21  2
    22  100
[root@localhost ~]# sed -n '16,${n;p}' 1.txt
2
2
2

输出第16行至文件尾之间的奇数行,16开始算1,相当于
16-1,17-2,18-3,19-4,20-5,21-6,22-7,则输出16,18,20,22
16,${p;n}

[root@localhost ~]# cat -n 1.txt
     1  1
     2  1
     3  1
     4  1
     5  1
     6  1
     7  1
     8  1
     9  1
    10  1
    11  1
    12  1
    13  1
    14  1
    15  1
    16  1
    17  2
    18  2
    19  2
    20  2
    21  2
    22  100
[root@localhost ~]# sed -n '16,${p;n}' 1.txt
1
2
2
100

显示第二行的内容 2p

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.133.202  netmask 255.255.255.0  broadcast 192.168.133.255
        inet6 fe80::69d7:512d:91be:7aa3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:7a:5b  txqueuelen 1000  (Ethernet)
        RX packets 73468  bytes 53142175 (50.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14106  bytes 6776269 (6.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 616  bytes 53408 (52.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 616  bytes 53408 (52.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:da:58:90  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

[root@localhost ~]# ifconfig |sed -n '2p'
        inet 192.168.133.202  netmask 255.255.255.0  broadcast 192.168.133.255

显示ifconfig中包含RX的行,/RX/

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.133.202  netmask 255.255.255.0  broadcast 192.168.133.255
        inet6 fe80::69d7:512d:91be:7aa3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:7a:5b  txqueuelen 1000  (Ethernet)
        RX packets 73585  bytes 53151663 (50.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14158  bytes 6784045 (6.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 616  bytes 53408 (52.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 616  bytes 53408 (52.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:da:58:90  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

[root@localhost ~]# ifconfig |sed -n '/RX/p'
        RX packets 73603  bytes 53153265 (50.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        RX packets 616  bytes 53408 (52.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0

显示包含2的行号

[root@localhost ~]# cat -n 1.txt
     1  1
     2  1
     3  1
     4  1
     5  1
     6  1
     7  1
     8  1
     9  1
    10  1
    11  1
    12  1
    13  1
    14  1
    15  1
    16  1
    17  2
    18  2
    19  2
    20  2
    21  2
    22  100
[root@localhost ~]# sed -n '/2/=' 1.txt
17
18
19
20
21

显示包含以PI开头或以The开头的行

[root@localhost ~]# cat -n 1.txt
     1  1
     2  1
     3  1
     4  1
     5  1
     6  1
     7  1
     8  1
     9  1
    10  1
    11  1
    12  1
    13  1
    14  1
    15  1
    16  1
    17  2
    18  2
    19  2
    20  2
    21  2
    22  100
    23  PI
    24  The
[root@localhost ~]# sed -n '/^PI/p' 1.txt
PI
[root@localhost ~]# sed -n '/^PI/=' 1.txt
23

显示结尾包含小写字母的行

[root@localhost ~]# sed -n '/[a-z]$/p' 1.txt
The

显示结尾包含大写字母的行

[root@localhost ~]# sed -n '/[A-Z]$/p' 1.txt
PI

nl 相当于 cat -n 都能打印行数

[root@localhost ~]# echo '123' > 1.txt
[root@localhost ~]# cat -n 1.txt
     1  123
[root@localhost ~]# nl 1.txt
     1  123

显示行号并删除第二行

[root@localhost ~]# nl 1.txt | sed  '2d'
     1  123
     3  hello
     4  world

显示行号并删除1-2行

[root@localhost ~]# nl 1.txt |sed '1,2d'
     3  hello
     4  world

删除以h开头的行

[root@localhost ~]# cat 1.txt  |sed '/^h/d'
123
222
world

替换每行第一个1换为A

[root@localhost ~]# sed 's/1/A/' 1.txt
A23
222
hello
world

将/etc/passwd下/bin/bash 替换成/sbin/nologin

[root@localhost ~]# sed -n 's/bin\/bash/\/sbin\/nologin/p' /etc/passwd
root:x:0:0:root:/root://sbin/nologin
zlf:x:1000:1000:ZLF:/home/zlf://sbin/nologin
mysql:x:27:27:MySQL Server:/var/lib/mysql://sbin/nologin

将第1行至2行复制剪贴到第4行后

[root@localhost ~]# cat -n 1.txt
     1  123
     2  222
     3  hello
     4  world
[root@localhost ~]#
[root@localhost ~]# sed  '1,2{H;d};4G'  1.txt
hello
world

123
222

将1.txt中的hello移动到2.txt中

[root@localhost ~]# sed '/hello/w 2.txt' 1.txt
123
222
hello
world

[root@localhost ~]# cat 2.txt
hello

通过sed -f 调用2.txt去对1.txt操作

[root@localhost ~]# cat -n 1.txt
     1  123
     2  222
     3  hello
     4  world
     5
[root@localhost ~]# cat -n 2.txt       #复制1,2行,删除1,2行,放到4行以后
     1  1,2H
     2  1,2d
     3  4G
[root@localhost ~]# nl 1.txt | sed -f 2.txt
     3  hello
     4  world

     1  123
     2  222
     5

awk 文件分析工具

跟sed一样,对文本输入、文件、管道符进行读取
工作原理:
①当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出
②如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次
③逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令

与sed比较
sed命令常用于一整行的处理。而awk比较倾向于将一行分成多个 “ 字段 ” 然后再进行处理。awk信息的读入也是逐行读取的,执行结果可以通过print的功能将字段数据打印显示。在使用awk命令的过程中,可以使用逻辑操作符。(&&“表示"与”、“||表示"或”、"!“表示非”;还可以进行简单的数学运算,如+、一、*、/、%、^分别表示加、减、乘、除、取余和乘方。)

格式1: awk 【选项】 '模式或条件{操作} ’ 文件名
格式2: awk -f 脚本文件 文件名
awk中存在内置变量

内置变量含义
NF列数
NR行数
FNR读取文件的记录数(行号),从1开始,新的文件重新从1开始计数
$0处理整行内容(就是:表示一行的内容)
$n处理第n列的数据
FILENAME被处理的文件名
FS指定每行的字段分隔符,默认为空格或制表位(相当于选项 -F )
OFS输出字段的分隔符,默认也是空格
RS行分割符。awk从文件上读取资料时,将根据Rs的定义把资料切割成许多条记录,而awk一次仅读取一条记录,预设值是“\n“
ORS输出分割符,默认也是换行符

常用实例:

$n的使用

n是指数字,n为多少,就是多少列
1、结合print输出,默认分隔符

[root@localhost ~]# awk '{print}' 1.txt          #直接输出全部内容
123
222
hello
world

2、输出第一列

[root@localhost ~]# awk '{print $1}' 1.txt     
#由于没有设置分隔符,awk默认以空格位分割,所以他认为整个一行都是一列
也就是说123,222,hello这种就是一列
123
222
hello
world

[root@localhost ~]# awk -F3 '{print $1}' 1.txt      #设置分隔符为3,输出第一列
12
222
hello
world

3、输出第五列,分隔符为:

[root@localhost ~]# cat /etc/passwd      #原文
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/var/run/gluster:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:991::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zlf:x:1000:1000:ZLF:/home/zlf:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

[root@localhost ~]# awk -F: '{print $5}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
FTP User
Nobody
systemd Network Management
System message bus
User for polkitd
daemon account for libstoragemgmt
Rpcbind Daemon
Unbound DNS resolver
Saslauthd user

RPC Service User
Anonymous NFS User
Account used by the trousers package to sandbox the tcsd daemon
GlusterFS daemons
radvd user
qemu user
Privilege-separated SSH




ZLF
MySQL Server
Apache

4、输出第一列和第五列,分隔符为:

[root@localhost ~]# awk -F: '{print $1 $5}'  /etc/passwd
rootroot
binbin
daemondaemon
admadm
lplp
syncsync
shutdownshutdown
halthalt
mailmail
operatoroperator
gamesgames
ftpFTP User
nobodyNobody
systemd-networksystemd Network Management
dbusSystem message bus
polkitdUser for polkitd
libstoragemgmtdaemon account for libstoragemgmt
rpcRpcbind Daemon
unboundUnbound DNS resolver
saslauthSaslauthd user
abrt
rpcuserRPC Service User
nfsnobodyAnonymous NFS User
tssAccount used by the trousers package to sandbox the tcsd daemon
glusterGlusterFS daemons
radvdradvd user
qemuqemu user
sshdPrivilege-separated SSH
postfix
ntp
chrony
tcpdump
zlfZLF
mysqlMySQL Server
apacheApache

5、可以用" ",连接两个列

[root@localhost ~]# awk -F: '{print $1" "$5}'  /etc/passwd
或者这样  [root@localhost ~]# awk -F: '{print $1,$5}'  /etc/passwd
root root
bin bin
daemon daemon
adm adm
lp lp
sync sync
shutdown shutdown
halt halt
mail mail
operator operator
games games
ftp FTP User
nobody Nobody
systemd-network systemd Network Management
dbus System message bus
polkitd User for polkitd
libstoragemgmt daemon account for libstoragemgmt
rpc Rpcbind Daemon
unbound Unbound DNS resolver
saslauth Saslauthd user
abrt
rpcuser RPC Service User
nfsnobody Anonymous NFS User
tss Account used by the trousers package to sandbox the tcsd daemon
gluster GlusterFS daemons
radvd radvd user
qemu qemu user
sshd Privilege-separated SSH
postfix
ntp
chrony
tcpdump
zlf ZLF
mysql MySQL Server
apache Apache

6、两列之间插入制表符

[root@localhost ~]# awk -F: '{print $1"\t"$5}'  /etc/passwd
root    root
bin     bin
daemon  daemon
adm     adm
lp      lp
sync    sync
shutdown        shutdown
halt    halt
mail    mail
operator        operator
games   games
ftp     FTP User
nobody  Nobody
systemd-network systemd Network Management
dbus    System message bus
polkitd User for polkitd
libstoragemgmt  daemon account for libstoragemgmt
rpc     Rpcbind Daemon
unbound Unbound DNS resolver
saslauth        Saslauthd user
abrt
rpcuser RPC Service User
nfsnobody       Anonymous NFS User
tss     Account used by the trousers package to sandbox the tcsd daemon
gluster GlusterFS daemons
radvd   radvd user
qemu    qemu user
sshd    Privilege-separated SSH
postfix
ntp
chrony
tcpdump
zlf     ZLF
mysql   MySQL Server
apache  Apache

7、设置多个分隔符

[root@localhost ~]# awk -F[:/] '{print $9}'  /etc/passwd
bin
$0的使用

$0表示整行
搜索包含root的行,以:和/为分隔符,整行输出

[root@localhost ~]# awk -F[:/] '/root/{print $0}'  /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

[root@localhost ~]# awk -F/ '/root/'  /etc/passwd      #搜索包含root的行,以/为分隔符
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
【NF】(多少列) 和 【NR】(多少行)的演示

NR:表示该处理的行序号是多少
NF:表示该处理的行,有多少列

[root@localhost ~]# awk -F[:/] '{print NF}'  /etc/passwd
10
10
10
11
12
10
10
10
12
10
11
11
10
10

[root@localhost ~]# awk -F[:/] '{print NR}'  /etc/passwd
1
2
3
4
5
6
7
8
9
10

[root@localhost ~]# awk -F: '{print NF}'  /etc/passwd
7
7
7
7
7
7
7
7
7
7
7

1、显示行号,并输出每一行

[root@localhost ~]# awk -F: '{print NR,$0}'  /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
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
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin

2、打印第二行,默认不加print也是打印

[root@localhost ~]# awk 'NR==2' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin

3、打印第二行的第一列

[root@localhost ~]# awk -F: 'NR==2{print $1}' /etc/passwd
bin

4、打印最后一列

[root@localhost ~]# awk -F: '{print $NF}' /etc/passwd
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
/sbin/nologin
/bin/sync
/sbin/shutdown
/sbin/halt
/sbin/nologin
/sbin/nologin
/sbin/nologin

5、打印总行数

[root@localhost ~]# awk 'END{print NR}' /etc/passwd
35

6、打印文件最后一行 END表示最后,$0表示整行

[root@localhost ~]# awk 'END{print $0}' /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

7、加上文字描述

[root@localhost ~]# awk -F: '{print "当前的行数为"NR""}' /etc/passwd
当前的行数为1
当前的行数为2
当前的行数为3
当前的行数为4
当前的行数为5
当前的行数为6
当前的行数为7
当前的行数为8
当前的行数为9
当前的行数为10
当前的行数为11
[root@localhost ~]# awk -F[:/] '{print "当前的行数为"NR",有"NF"列"}' /etc/passwd
当前的行数为1,有10列
当前的行数为2,有10列
当前的行数为3,有10列
当前的行数为4,有11列
当前的行数为5,有12列
当前的行数为6,有10列
当前的行数为7,有10列
当前的行数为8,有10列
当前的行数为9,有12列
当前的行数为10,有10列
当前的行数为11,有11列
当前的行数为12,有11列
当前的行数为13,有10列
当前的行数为14,有10列
当前的行数为15,有10列

8、实际应用
获取IP

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.133.203  netmask 255.255.255.0  broadcast 192.168.133.255
        inet6 fe80::69d7:512d:91be:7aa3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:0d:7a:5b  txqueuelen 1000  (Ethernet)
        RX packets 85401  bytes 54139748 (51.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 19052  bytes 7447959 (7.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 620  bytes 53760 (52.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 620  bytes 53760 (52.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:da:58:90  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

[root@localhost ~]# ifconfig |awk 'NR==2{print "本机IP为"$2}'
本机IP为192.168.133.203

本机流量多少字节

[root@localhost ~]# ifconfig |awk 'NR==5{print $5}'
54150804

查看/目录可用空间

[root@localhost ~]# df -h  | awk 'NR==2{print "/分区的可用量为"$4}'
/分区的可用量为45G

BEGIN(初始化),END(统计)

[root@localhost ~]# awk 'BEGIN{FS=":"}{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
rpc
unbound
saslauth
abrt
rpcuser
nfsnobody
tss
gluster
radvd
qemu
sshd
postfix
ntp
chrony
tcpdump
zlf
mysql
apache
[root@localhost ~]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
rpc
unbound
saslauth
abrt
rpcuser
nfsnobody
tss
gluster
radvd
qemu
sshd
postfix
ntp
chrony
tcpdump
zlf
mysql
apache

OFS定义输出时用什么间隔

[root@localhost ~]# awk -F: '{print $1"---"$5}' /etc/passwd
root---root
bin---bin
daemon---daemon
adm---adm
lp---lp
sync---sync
shutdown---shutdown
halt---halt
mail---mail
operator---operator
games---games
ftp---FTP User
nobody---Nobody
systemd-network---systemd Network Management
dbus---System message bus
polkitd---User for polkitd
libstoragemgmt---daemon account for libstoragemgmt
rpc---Rpcbind Daemon
unbound---Unbound DNS resolver
saslauth---Saslauthd user
abrt---
rpcuser---RPC Service User
nfsnobody---Anonymous NFS User
tss---Account used by the trousers package to sandbox the tcsd daemon
gluster---GlusterFS daemons
radvd---radvd user
qemu---qemu user
sshd---Privilege-separated SSH
postfix---
ntp---
chrony---
tcpdump---
zlf---ZLF
mysql---MySQL Server
apache---Apache
[root@localhost ~]# awk 'BEGIN{FS=":";OFS="---"}{print $1,$5}' /etc/passwd
root---root
bin---bin
daemon---daemon
adm---adm
lp---lp
sync---sync
shutdown---shutdown
halt---halt
mail---mail
operator---operator
games---games
ftp---FTP User
nobody---Nobody
systemd-network---systemd Network Management
dbus---System message bus
polkitd---User for polkitd
libstoragemgmt---daemon account for libstoragemgmt
rpc---Rpcbind Daemon
unbound---Unbound DNS resolver
saslauth---Saslauthd user
abrt---
rpcuser---RPC Service User
nfsnobody---Anonymous NFS User
tss---Account used by the trousers package to sandbox the tcsd daemon
gluster---GlusterFS daemons
radvd---radvd user
qemu---qemu user
sshd---Privilege-separated SSH
postfix---
ntp---
chrony---
tcpdump---
zlf---ZLF
mysql---MySQL Server
apache---Apache

注:$n:表示截取哪一列,通常和print一起使用
$0:表示整行内容
NF:表示该行有多少列
NR:表示该行的行号
FNR:表示读取两个文件时,序号会分别从0开始标
FS:表示读取文件的分隔符(默认空格)
OFS:表示输入的内容以什么为分割符(默认空格)
RS:表示读取文件的以什么为换行符(默认\n)
ORS:表示输出的内容以什么为换行符(默认\n)
~:表示包含
!~:表示不包含

8、stat 查看文件具体存储信息和时间

①查看文件 anaconda-ks.cfg 的三种时间状态:Access,Modify,Change:

[root@localhost ~]# stat 1.txt
  文件:"1.txt"
  大小:22              块:8          IO 块:4096   普通文件
设备:fd00h/64768d      Inode:67157078    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
最近访问:2023-09-21 21:49:56.592601225 +0800
最近更改:2023-09-21 21:49:54.431627074 +0800
最近改动:2023-09-21 21:49:54.431627074 +0800
创建时间:-

②查看文件系统信息

[root@localhost ~]# stat -f 1.txt
  文件:"1.txt"
    ID:fd0000000000 文件名长度:255     类型:xfs
块大小:4096       基本块大小:4096
    块:总计:12312705   空闲:11775706   可用:11775706
Inodes: 总计:24637440   空闲:24590364

9、cut 用于按列提取字符

参数含义
-c以字符为单位进行分割 , 仅显示行中指定范围的字符
-f显示指定字段的内容 , 与-d一起使用
-d自定义分隔符,默认为制表符”TAB”

passwd配置文件,通过cut进行提取字符

[root@localhost ~]# cat 3.txt
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
unbound:x:997:996:Unbound DNS resolver:/etc/unbound:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/var/run/gluster:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:991::/var/lib/chrony:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
zlf:x:1000:1000:ZLF:/home/zlf:/bin/bash
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

提取第一列的字符,分隔符为":"

[root@localhost ~]# cut -f 1 -d":" 3.txt
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
libstoragemgmt
rpc
unbound
saslauth
abrt
rpcuser
nfsnobody
tss
gluster
radvd
qemu
sshd
postfix
ntp
chrony
tcpdump
zlf
mysql
apache

提取1-5个字符

[root@localhost ~]# cut -c1-5  3.txt
sync:
shutd
halt:
mail:
opera
games
ftp:x
nobod
syste
dbus:
polki
libst
rpc:x
unbou
sasla
abrt:
rpcus
nfsno
tss:x
glust
radvd
qemu:
sshd:
postf
ntp:x
chron
tcpdu
zlf:x
mysql
apach

10、diff 用于比较两个文件之间的差异

[root@localhost ~]# cat 1.txt
123
222
hello
world

zlf
[root@localhost ~]# cat 11.txt
zlf
[root@localhost ~]# diff 1.txt  11.txt -y
123                                                           <
222                                                           <
hello                                                         <
world                                                         <
                                                              <
zlf                                                             zlf

11、wc 统计指定文本行数、字数、字节数

参数含义
-w统计字符串数,空格、tab、换行符这些均不算,只算字符。例如“abc”算1个字符串
-c统计字节数,或–bytes或–chars:只显示Bytes数
-l统计列数
-m统计字符数,注意:每行末尾有一个$符
-L统计最长行的字符数or长度

经典案例:

[root@localhost ~]# cat 1.txt
123
222
hello
world

zlf
[root@localhost ~]# cat 11.txt
zlf

# 统计列数
[root@localhost ~]# wc -l 1.txt
6 1.txt
# 统计字符串数
[root@localhost ~]# wc -w 1.txt
5 1.txt
[root@localhost ~]# wc -w 11.txt
1 11.txt
# 统计字节数
[root@localhost ~]# wc -c 1.txt
26 1.txt
# 统计字符数
[root@localhost ~]# wc -m 11.txt
4 11.txt
[root@localhost ~]# wc -m 1.txt
26 1.txt
# 统计最长行的字符数
[root@localhost ~]# wc -L 1.txt
5 1.txt
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值