这里写目录标题
一、Linux目录结构
目录名称 | 对应意义 |
---|---|
/root | 系统管理员的家目录 |
/home | 存放普通用户的家目录,每个用户都有一个自己的目录,目录名是以用户名命名的 |
/bin | binary的缩写,这个目录存放着最经常使用的命令 |
/sbin | 存放的是系统管理员使用的系统管理程序,只有root权限才能执行 |
/boot | 存放的是启动linux时使用的一些核心文件,包括一些连接文件和镜像文件,自己的安装别放这里 |
/dev | 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,类似于windows的设备管理器,把所有的硬件用文件的形式存储 |
/etc | 系统配置文件存放的目录 |
/usr | usr(不是 user),全称为 Unix Software Resource(Unix操作系统软件资源) 存放的是用户的应用程序和文件,类似于windows的program files目录 |
/usr/local | 另一个给主机额外安装软件的目录,一般是通过编译源码方式安装的程序,用户自行安装的软件所存放的目录 |
/media、/mnt、/misc | linux会自动识别一些设备,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
今天的文章linux常用基本命令大全_linux基础命令分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83050.html