bash快捷键
快捷键 | 作用 |
---|---|
crtl+A | 把光标移动到命令行开头,如果我们输入的命令过长,想要把光标移动到命令行开头时使用 |
crtl+E | 把光标移动到命令行结尾 |
crtl+C | 强制终止当前的命令 |
crtl+L | 清屏,相当于clear命令 |
crtl+U | 删除或剪切光标之前的命令,加入输入了一串很长的命令,不用使用退格键一个一个字符的删除,使用这个命令更加方便 |
crtl+K | 删除或剪切光标之后的命令 |
crtl+Y | 粘贴ctrl+U或crtl+K剪切的内容 |
crtl+R | 在历史命令中搜索,按下crtl+R键之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索 |
crtl+D | 推出当前终端 |
crtl+Z | 暂停,并放入后台,这个快捷键牵扯到工作管理的内容 |
crtl+S | 暂停屏幕输出 |
crtl+Q | 恢复屏幕输出 |
1 查看服务器日志
1.1 统计业务接口调用的次数
(1) grep -c
格式:grep -c {关键词} {日志文件}
-c
会把所有符合要求的文件都统计出数量结果,不会将所有的日志的数量进行汇总,所以这个命令执行完之后,会得到所有符合要求的文件以及该文件中符合要求的数量,如下所示:
grep -c getInfo /data/nginx/logs/info-2021-07-*
grep正则表达式:
元数据 | 意义和范例 |
---|---|
^word | 搜寻以word开头的行。 例如:搜寻以#开头的脚本注释行 grep –n ‘^#’ regular.txt |
word$ | 搜寻以word结束的行 |
. | 匹配任意一个字符。 例如:grep –n ‘e.e’ regular.txt 匹配e和e之间有任意一个字符,可以匹配eee,eae,eve,但是不匹配ee。 |
\ | 转义字符。 例如:搜寻’,’是一个特殊字符,在正则表达式中有特殊含义。必须要先转义。grep –n ‘\,” regular.txt |
\* | 前面的字符重复0到多次。 例如匹配gle,gogle,google,gooogle等等 grep –n ‘go\*gle’ regular.txt |
[list] | 匹配一系列字符中的一个。 例如:匹配gl,gf。grep –n ‘g[lf]’ regular.txt |
[n1-n2] | 匹配一个字符范围中的一个字符。 例如:匹配数字字符 grep –n ‘[0-9]’ regular.txt |
[^list] | 匹配字符集以外的字符 例如:grep –n ‘[^o]‘ regular.txt 匹配非o字符 |
\<word | 单词是的开头。 例如:匹配以g开头的单词 grep –n ‘\<g’ regular.txt |
word\> | 前面的字符重复n1,n2次 例如:匹配google,gooogle。grep –n ‘go\{2,3\}gle’ regular.txt |
\<word | 匹配单词结尾 例如:匹配以tion结尾的单词 grep –n ‘tion\>’ regular.txt |
word\{n1\} | 前面的字符重复n1 例如:匹配google。 grep –n ‘go\{2\}gle’ regular.txt |
word\{n1,\} | 前面的字符至少重复n1 例如:匹配google,gooogle。 grep –n ‘go\{2\}gle’ regular.txt |
word\{n1,n2\} | 前面的字符重复n1,n2次 例如:匹配google,gooogle。 grep –n ‘go\{2,3\}gle’ regular.txt |
(2) grep与wc -l结合
格式:grep {关键词} {日志文件} | wc -l
这个命令会把所有符合要求的文件中的统计数量进行汇总求和,所有这个命令执行完之后,会得到一个数字。
grep getInfo /data/nginx/logs/info-2021-07-* | wc -l
(3) zgrep
格式:zgrep {关键词} {日志文件} | wc -l
由于日志文件可能会很大,很多公司会每天按照大小进行切分,并以压缩格式保存,这类文件就需要使用zgrep命令进行统计。
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# zgrep -c 'TraceLogProviderFilter' punchout.2020-02-23_1.log.gz
274647
root@iZbp1crt1zqre1ar8:/HD/logs/punchout# zgrep -c 'TraceLogProviderFilter' punchout.2020-02-23_*.log.gz
punchout.2020-02-23_1.log.gz:274647
punchout.2020-02-23_2.log.gz:274995
(4) 按照正则匹配所有接口形式的调用
正则表达式形式如下:
awk '{match($0, /\/[a-zA-Z]+\/[a-zA-Z]+/, a); print a[0];}'
命令如下:
cat log.2021081916 | awk '{match($0, /\/[a-zA-Z]+\/[a-zA-Z]+/, a); print a[0];}' | sort | uniq -c | sort -n -r
(5) 统计调用次数大于n
的接口
先整理出所有接口被调用的次数,然后再使用awk
对所有接口和调用次数进行遍历,筛选出所有调用次数大于n
的接口即可。
cat log.20210819 | awk '{match($0, /\/[a-zA-Z]+\/[a-zA-Z]+/, a); print a[0];}' | sort | uniq -c | sort -n -r | awk -F " " '{if ($1>100) print $1, $2}'
1.2 统计访问IP的次数
首先查看日志的格式,可以按照空格进行切割,然后对切割完的结果进行排序,使用sort
命令,最后在使用uniq命令,去除一些重复的行
-
知道IP在哪个位置:
cat log.2021073016-20210730 | awk -F' ' '{print $4}' | sort | uniq -c
-
不知道IP在哪个位置,采用正则匹配
cat log.2021073016-20210730 | awk --re-interval '{match($0, /([0-9]{1,3}\.){3}[0-9]{1,3}/, a); print a[0]}' | sort | uniq -c | sort -n -r
2 查看服务器负载
服务器负载一般指的是Linux服务器的CPU、内存、IO等的负载。
(1) uptime-查看系统负载
语法格式:uptime [参数]
常用参数:
-p | 以漂亮的格式显示机器正常运行的时间 |
---|---|
-s | 系统自开始运行时间,格式为yyyy-mm-dd hh:mm:ss |
-h | 显示帮助信息 |
[root@localhost ~]# uptime
01:46:16 up 9 days, 2:47, 3 users, load average: 0.00, 0.01, 0.05
[root@localhost ~]# uptime -p
up 1 week, 2 days, 2 hours, 48 minutes
[root@localhost ~]# uptime -s
2021-07-18 22:58:18
(2) w-显示已登录用户
**语法格式:**w [参数]
常用参数:
-h/–no-header | 不打印头信息 |
---|---|
-u/–no-current | 当显示当前进程和cpu时间时忽略用户名 |
-s/–short | 使用短输出格式 |
-f/–from | 显示用户从哪登录 |
-o/–old-style | 老式输出 |
-i/–ip-addr | 显示IP地址而不是主机名(如果可能) |
–help | 显示此帮助并退出 |
-V/–version | 显示版本信息 |
[root@localhost ~]# w
01:50:46 up 9 days, 2:52, 4 users, load average: 0.14, 0.08, 0.07
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.10.1 Tue04 5:50m 0.22s 0.16s redis-cli -h 10.18.243.168 -p 6379
root pts/3 192.168.10.1 Tue04 1:18 0.36s 0.36s -bash
root pts/4 192.168.10.1 Tue04 6.00s 0.11s 0.11s -bash
centos pts/5 192.168.10.1 01:49 46.00s 0.09s 0.01s mysql -uroot -px xxxxxxxxx
(3) top-实时显示进程动态
**语法格式:**top [参数]
常用参数:
-d | 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s |
---|---|
-q | 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行 |
-c | 切换显示模式 |
-s | 安全模式,将交谈式指令取消, 避免潜在的危机 |
-i | 不显示任何闲置 (idle) 或无用 (zombie) 的行程 |
-n | 更新的次数,完成后将会退出 top |
-b | 批次档模式,搭配 “n” 参数一起使用,可以用来将 top 的结果输出到档案内 |
-
查看CPU个数
在top界面下,按下1,即可查看cpu个数。
(4) iostat-监视系统输入输出设备和CPU的使用情况
语法格式: iostat [参数] [设备]
常用参数:
-c | 仅显示CPU使用情况 |
---|---|
-d | 仅显示设备利用率 |
-k | 显示状态以千字节每秒为单位,而不使用块每秒 |
-m | 显示状态以兆字节每秒为单位 |
-p | 仅显示块设备和所有被使用的其他分区的状态 |
-t | 显示每个报告产生时的时间 |
(5) mpstat
mpstat mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
再来看看 oschina 上的 mpstat 命令执行结果:
(6) netstat
Netstat 和 ps 命令类似,是 Linux 管理员基本上每天都会用的工具,它显示了大量跟网络相关的信息,例如 socket 的使用、路由、接口、协议、网络等等,下面是一些常用的参数:
-a
Show all socket information- -
r
Show routing information -i
Show network interface statistics-s
Show network protocol statistics
(7) nmon
Nmon, 是 Nigel’s Monitor 的缩写,是一个使用很普遍的开源工具,用以监控 Linux 系统的性能。Nmon 监控多个子系统的性能数据,例如处理器的使用率、内存使用率、队列、磁盘I/O统计、网络I/O统计、内存页处理和进程信息。Nmon 也提供了一个图形化的工具。
要运行 nmon,你可以在命令行中启动它,然后选择要监控的子系统,这些子系统都对应有一个快捷键,例如输入 c 可查看 CPU 信息,m用于查看内存,d用来查看磁盘信息等,你也可以使用 -f 命令将 nmon 的执行结果保存到一个 CSV 文件中,便于日后分析。在每日的监控工作中,我发现 nmon 是我最常用的工具。
nmon不是Linux系统自带的命令,需要进行安装,安装命令如下:
yum install nmon
(8) ps|pstree
ps 和 pstree 命令是 Linux 系统管理员最好的朋友,都可以用来列表正在运行的所有进程。ps 告诉你每个进程占用的内存和 CPU 处理时间,而 pstree 显示的信息没那么详细,但它以树形结构显示进程之间的依赖关系,包括子进程信息。一旦发现某个进程有问题,你可以使用 kill 来杀掉它。
kill pid # kill a process
(9) sar-系统运行状态统计
该命令号称系统监控的瑞士军刀,目前Linux上最为全面的系统性能分析工具之一,可以从14个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU效率、内存使用状况、进程活动及IPC有关的活动等,使用也是较为复杂。
sar 默认显示的是从零点开始每隔十分钟到现在的CPU情况,如果是查看之前的报告,需要指定日志报告,sar -f /var/log/sysstat/sa25 。
解释下各列的指标:
%user 用户模式下消耗的CPU时间的比例;
%nice 通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system 系统模式下消耗的CPU时间的比例;
%iowait CPU等待磁盘I/O导致空闲状态消耗的时间比例;
%steal 利用Xen等操作系统虚拟化技术,等待其它虚拟CPU计算占用的时间比例;
%idle CPU空闲时间比例;
-
查看内存使用情况:
sar -r
-
查看带宽
sar -n DEV
-
tips
Reference
- https://blog.csdn.net/pjx827480541/article/details/104457511
- Linux查看机器负载
- https://cloud.tencent.com/developer/article/1533965
- https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316399.html