一、文件创建与操作
1、如何快速创建多个相同类型的文件
如创建名字为haodao1.py, haodao2.py到haodao100.py的批量文件。
touch haodao{1..100}.py2、如何快速生成一个大文件
有时候需要在本机生成一个大文件,用于测试磁盘的读写能力,可以借助dd命令生成大文件。
ddif=/dev/zero of=/root/haodaolinux/test.txt bs=1M count=1024
上述命令,在/root/haodaolinux目录下生成一个文件名为test.txt大小为1G的文件。
3、快速清空一个文件的方法,如清空haodao.py文件
# 方法1cat /dev/null > haodao.py
# 方法2echo-n""> haodao.py
# 方法3true> haodao.py
# 方法4:> haodao.py
# 方法5truncate -s0 haodao.py
二、文件查找(find命令)
1、查找当前目录下名字为haodao.py的文件
find.-name haodao.py
2、查找当前目录下名字以.py结尾的文件
find.-name"*.py"
3、查找当前目录下名字以.py结尾的文件,并且指定为文件类型搜索
find.-type f -name"*.py"
4、查找当前目录下名字包含haodao的目录
find.-type d -name"haodao*"
5、查找当前目录下文件权限为755的对应文件
find.-type f -perm755
6、查找当前目录下不具有755权限的所有文件
find.-type f !-perm755
7、查找当前目录下具有777权限的所有文件,并且将这些权限全部改为755
find.-type f -perm777-execchmod755{}\;# 或使用xargs方式find.-type f -perm777|xargschmod755
8、查找当前目录下文件大小100MB~1GB的所有文件
find.-type f -size +100M -size-1G
9、查找当前目录下以.py结尾的文件,并且删除
find.-type f -name"*.py"-delete
# 或使用xargs方式find.-type f -name"*.py"|xargsrm-f
10、查找当前目录下30天前修改过的所有文件
find.-type f -mtime +30
11、查找当前目录下30天前访问过的所有文件
find.-type f -atime +30
12、查找当前目录下过去1个小时内修改过的所有文件
find.-type f -mmin-60
13、查找当前目录下过去1个小时内访问过的所有文件
find.-type f -amin-60
14、查找当前目录下修改超过10天,但修改不到30天的所有文件
find.-type f -mtime +10 -mtime-30
15、查找当前目录下7天前创建的,并且后缀名是以.py结尾的文件,并且进行删除
find.-mtime +7 -name"*.py"|xargsrm-rf
16、查找当前目录大于1000M的文件,并将该文件移动到/root/home目录下
find.-size +1000M -execmv{} /root/home \;17、查找当前目录下创建于30天前,大小大于1000M,以.py结尾的文件,并且进行删除
find.-name"*.py"-mtime +30 -type f -size +1000M |xargsrm-rf
三、系统信息与监控
1、查看有几个逻辑cpu,包括cpu型号
cat /proc/cpuinfo |grep name |cut-f2 -d: |uniq-c
2、查看有几颗cpu,每颗分别是几核
# 查看物理CPU颗数cat /proc/cpuinfo |grep"physical id"|sort|uniq|wc-l
# 查看每颗CPU的核心数cat /proc/cpuinfo |grep"cpu cores"|uniq
# 更详细的展示方式lscpu |grep-E"Socket|Core|Thread"
3、后台运行命令,如后台运行ping www.baidu.com命令
# 方式1:使用&将命令放入后台ping www.baidu.com > ping.log 2>&1&
# 方式2:使用nohup保证退出终端后继续运行nohupping www.baidu.com > ping.log 2>&1&
# 方式3:使用screen或tmux(需要安装)screen-dmS ping_session ping www.baidu.com
4、强制关闭进程名包含XX的所有进程
ps aux |grep xxx |grep-vgrep|awk'{print $2}'|xargskill-95、/var目录按照目录大小排序展示最前面20个目录或者文件
du-xB M --max-depth=2 /var |sort-rn|head-n20
6、按照大到小排列出当前文件或者目录最大的10个
du-s * |sort-n|tail
7、查找当前系统内存使用量较高的进程(前20个)
ps aux --sort=-%mem |head-21
# 或更美观的格式ps aux --sort=-%mem |awk'NR<=21{print $2,$4,$6,$11}'|column-t8、查找当前系统CPU使用量较高的进程(前20个)
ps aux --sort=-%cpu |head-21
# 或更美观的格式ps aux --sort=-%cpu |awk'NR<=21{print $2,$3,$11}'|column-t9、后台持续ping包,并将结果记录到日志中
# 每2秒ping一次,记录带时间戳的日志whiletrue;doecho"$(date) - $(ping-c1 www.baidu.com |grep'time=')">> ping.log;sleep2;done&
# 或使用nohup配合脚本nohupbash-c'while true; do date >> ping.log && ping -c 1 www.baidu.com >> ping.log; sleep 2; done'&
10、查找80端口请求数最高的前15个IP
# 从access.log中分析awk'{print $1}' access.log |sort|uniq-c|sort-nr|head-15# 如果是nginx日志,过滤80端口(通常日志中已隐含)grep":80" access.log |awk'{print $1}'|sort|uniq-c|sort-nr|head-15# 使用netstat查看当前连接netstat-an|grep":80 "|awk'{print $5}'|cut -d: -f1|sort|uniq-c|sort-nr|head-1511、查看自己本机系统最常用的10条命令
# 查看history中最常用的10条命令history|awk'{print $2}'|sort|uniq-c|sort-nr|head-10# 更精确的方式(排除数字和符号)history|awk'{for(i=2;i<=NF;i++) print $i}'|grep-v"^[0-9]*$"|sort|uniq-c|sort-nr|head-10四、日志分析与Tomcat相关
1、查看2022年12月11日09时这个时间内有多少个IP访问你的tomcat服务器
# 假设tomcat日志格式包含日期时间grep"11/Dec/2022:09" access.log |awk'{print $1}'|sort|uniq|wc-l# 不同日志格式可能略有差异,例如:grep"2022-12-11 09:" access.log |awk'{print $1}'|sort-u|wc-l2、查看自己tomcat服务器访问量排在前20位的IP地址
awk'{print $1}' access.log |sort|uniq-c|sort-nr|head-203、查看某一个IP地址访问了tomcat服务器的哪些页面资源
grep ^192.168.30.200 access.log |awk'{print $1,$7}'4、查看自己tomcat服务器中某一个页面资源被访问的次数
grep"/portal/index.html" access.log |wc-l
五、抓包工具tcpdump
1、通过抓包工具tcpdump查看8080端口访问量情况
# 实时统计8080端口的访问包数量tcpdump -i ens33 port 8080-n2>/dev/null |wc-l
# 抓取10秒内的包并统计timeout10 tcpdump -i ens33 port 8080-n2>/dev/null |wc-l
# 查看具体的访问来源IPtcpdump -i ens33 port 8080-n-c1002>/dev/null |grep-oE'([0-9]{1,3}\.){3}[0-9]{1,3}'|sort|uniq-c|sort-nr2、针对网口ens33抓取不限制大小的报文,保存为文件haodao.cap
# 抓取所有报文,保存为cap文件(停止需Ctrl+C)tcpdump -i ens33 -s0-w haodao.cap
# 抓取10000个包后自动停止tcpdump -i ens33 -s0-c10000-w haodao.cap
# 抓取300秒后自动停止timeout300 tcpdump -i ens33 -s0-w haodao.cap
# 抓取特定端口的报文tcpdump -i ens33 port 8080-s0-w haodao.cap
3、针对网口ens33进行抓包,过滤出icmp报文并且源IP地址是192.168.20.231的相关报文
tcpdump icmp and src 192.168.20.231 -i ens33 -n
4、针对网口ens33进行抓包,过滤出源IP地址是192.168.20.231的相关报文
tcpdump src host192.168.20.231 -i ens33 -n-c5
六、sed文本处理命令
1、如何通过sed命令将文件test.py中的haodao全部替换成HAODAO
# 替换并输出到屏幕(不修改原文件)sed's/haodao/HAODAO/g' test.py
# 直接修改原文件(Linux)sed-i's/haodao/HAODAO/g' test.py
# 直接修改原文件并备份(Mac/Linux通用)sed-i.bak's/haodao/HAODAO/g' test.py
2、替换haodao.py文件中的目录
# 例如将/home/old目录替换为/home/newsed-i's|/home/old|/home/new|g' haodao.py
# 转义特殊字符的写法sed-i's/\/home\/old/\/home\/new/g' haodao.py
3、以下针对haodao.py文件举例sed命令常见技巧
# 1. 删除包含特定字符串的行
sed-i'/^$/d' haodao.py # 删除空行
sed-i'/#.*$/d' haodao.py # 删除注释行
sed-i'/^[[:space:]]*$/d' haodao.py # 删除只含空格的行
# 2. 在特定行前/后插入内容
sed-i'/import sys/i # This is a new line' haodao.py # 在匹配行前插入
sed-i'/import sys/a # This is a new line' haodao.py # 在匹配行后插入
# 3. 只替换每行第一个匹配
sed-i's/haodao/HAODAO/' haodao.py
# 4. 替换第2到第10行之间的内容
sed-i'2,10s/haodao/HAODAO/g' haodao.py
# 5. 在文件开头添加一行
sed-i'1i#!/usr/bin/env python' haodao.py
# 6. 在文件末尾添加一行
sed-i'$a# End of file' haodao.py
# 7. 打印指定行
sed-n'10p' haodao.py
# 8. 删除第5行到末尾
sed-i'5,$d' haodao.py
附录:常用快捷键提示
| |
|---|
Ctrl + R | |
Ctrl + A | |
Ctrl + E | |
Ctrl + K | |
Ctrl + U | |
Ctrl + W | |
!! | |
!$ | |
!^ | |
!n | |