Linux常用命令总结
一、常用指令
1、Vim
(1)命令行模式
:wq 保存退出
:q! 不保留强制退出控制台
:q 退出控制台
u 恢复上一次操作
set nu 列出行号
:5 跳到第5行
/搜索内容 n搜索下一个
1$ 移动到当前行行尾
0 移动到当前行行首
(2)插入模式
i 开始编辑,从当前位置输入文字
a 开始编辑,从当前光标的下一个位置开始输入
o 开始编辑,插入新的一行,从行首开始输入文字
esc 切换为命令行模式
(3)移动光标
comm+b 屏幕往后移动一页
comm+f 屏幕往前移动一页
comm+u 屏幕向后移动半页
comm+d 屏幕向前移动半页
O 移动到文章开头
G 移动到文章结尾
$ 移动到行尾
^ 移动到行首
5l 移动到该行第五个位置
(4)删除文字
x 删除光标后面一个文字
5x 删除光标后面5个字符
X 删除光标前面一个字符
2X 删除光标前面5个字符
dd 删除当前行
5dd 删除光标开始5行
https://www.cnblogs.com/itech/archive/2009/04/17/1438439.html
2、查找替换文件
(1)查找纯数字文件:
find . -regex "./[0-9]+.jpg"
当前目录和子目录查找文件名 find ./ -name 'hadoop-temrfs*'
(2)查找纯数字文件,移动到上一层的test文件夹下
find . -regex "./[0-9]+.jpg" | xargs -i cp {} ../test1
(3??)当前目录模糊搜索文件内容
find . -type f | xargs grep 'test-p'
cat */*.properties | grep '搜索内容'
grep -E "10.2.2.2|10.2.2.3" * 批量搜索
grep "搜索内容" */*.properties
(3)当前文件夹下查找包含字符串mysql-bin的文件
grep -rn mysql-bin ./
grep -l mysqlstar */* (推荐,当前下一级目录下搜索mysqlstr)
(4)替换当前文件夹下文件内容
sed -i 's:/apps/home/worker/wanglei:/apps/srv:g' *
参数说明:
-i 加上后修改文件,不加则控制台展示
s: 指定分隔符
g: 一行出现多个都替换
*:当前目录所有文件
sed -i 's:替换前:替换后:g' *
(5)清空文件
echo >test.sh
(6)删除文件
删除文件:rm text.txt
删除文件夹:rm -rf ./test
删除大文件夹: 首先创建空目录 mkdir /tmp/empty
然后删除(注意末尾斜线): rsync --delete-before -d /tmp/empty/ /home/ubuntu/test1/
剔除一个文件,其它删除 ls impala_lineage_log_1.0-16* | grep -v impala_lineage_log_1.0-1641536014659 | xargs -n100 rm -f
删除乱码文件:先ls -i 拿到文件id,然后执行 find -inum 节点号 -delete
(7)当前目录搜索文件名
3、压缩解压文件
(1)压缩文件夹
tar -czf test1.tar.gz ./test1/
(2)解压文件夹
tar -zxf nginx-1.20.1.tar.gz -C /opt/softWare/
tar -zxf kafka_2.12-2.4.0.tgz
4、系统资源
(1)统计每个目录下磁盘使用情况
df -h
(2)查看某个目录文件大小
某目录大小 du -bsh ./storage/
当前目录下文件大小,按大小排序 du -sh * | sort -h
当前目录总容量 du -sh
当前目录下一级节点占用资源 du -lh --max-depth=1
文件夹中文件个数,需要组合grep使用:wc
-l
(3)查看内存占用情况
free -h 友好展示
free -m 以MB展示
(4)查看端口占用情况
lsof -i:8080
netstat -nlp 推荐使用
netstat -an | grep 8080
(5)查看Java程序进程情况
jps -lm 可加v
查看进程连接的端口
netstat -nap | grep 436390 | grep 7001
(6)定时任务
crontab -l 查看本地定时任务
crontab -e 编辑本机定时任务,两分钟左右生效
例:* 3 * * * /bin/sh /apps/home/worker/bin/clean_log.sh >> /apps/home/worker/bin/logs/clean_log.log
查看定时任务执行日志:sudo tail -100 /var/log/cron
(7)搜索Linux服务
查询所有进程 ps -ef
查找指定进程 ps -ef | grep 'java'
查看某个服务启动参数 ps -ef|grep jindowin
查看pid启动的工作目录 pwdx pid
查看进程,带进程占用资源 ps aux
(8)查看远程端口是否开启
telnet baidu.com 11111
nc -v ip地址 端口
nc -vz -w 2 www.baidu.com 80
(9)查看当前目录哪个文件被占用
(10)查询服务器tcp连接状态
netstat -n|grep 80 | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
(11)查看当前tcp连接
连接数netstat -anp |grep tcp |wc -l
tcp连接的ip:
(12)服务器信息查看
查看cpu信息 less /proc/cpuinfo
物理cpu个数 less /proc/cpuinfo|grep 'physical id'
物理cpu中核数 less /proc/cpuinfo|grep 'cpu cores'
逻辑cpu核数 less /proc/cpuinfo|grep 'processor'
(13)清理12月之前的Flink checkpoint 目录
除了2021年12月的保留,其它删除
hdfs dfs -ls /flink/flink-checkpoints | grep -v 2021-12 | grep "/flink" | awk '{print $8}' | xargs -n50 hdfs dfs -rm -r -skipTrash
仅删除2021-11的数据,放回收站。 可多个操作,实际执行命令 hdfs dfs -rm -r 文件1 文件2
hdfs dfs -ls /flink/flink-checkpoints | grep 2021-11|awk '{print $8}'|xargs -n2 hdfs dfs -rm -r
仅删除2022-02的数据,放回收站。传参方式执行{}为参数值,每次操作一个,实际执行命令 hdfs dfs -rm -r 文件1
hdfs dfs -ls /flink/flink-checkpoints | grep 2022-02|awk '{print $8}'|xargs -n1 -i hdfs dfs -rm -r {}
(14) 查看服务器使用率
cpu使用率最高top2 ps auxw|head -1;ps auxw|sort -rn -k3|head -2
内存使用率最高top2 ps auxw|head -1;ps auxw|sort -rn -k4|head -2
(15)查询等待连接数
netstat -nap| grep $port | grep TIME_WAIT | wc -l
(16)服务器抓udp类型包
tcpdump -i eth0 udp -w ~/udplog.txt
(17)查询本服务器连接的ip
(18)本地发送post请求
curl -X POST 'http://127.0.0.1:8081/api/biz/listall' --header 'Content-Type: application/json;charset=UTF-8' --header 'Cookie: GID=1233333; JSESSIONID=CF6B503AD61A2170E1546ADE5AA675F8;' -d'{"keyword":"","pager":{"pageNum":1,"pageSize":10},"bizType":17}'
(19)查询mysql并下载结果到本地
gomysql -e "select * from tab1 where isdel=0 and cname like '%辅导老师%'" > /tmp/test.txt
(20)根据进程id批量kill进程
jps -lm |grep aa|awk '{print $1}'|xargs -n1 kill -9
(21)查看某个任务内存使用情况
jstat -gcutil 294553 1000
(22)jstack
(24)parallel
单机并行工具,极大地缓解了awk, sed等工具在处理大文件时的单线程高延时问题,前提是机器具备多处理器,相当于在单机执行一次map-only任务。
例如对于大文件求和,原命令 awk '{sum+=$0}END{print sum}' bigfile
使用并行方式 cat bigfile | parallel -j 8 --pipe awk '{sum+=$0}END{print sum}'
执行结果将输出8个子文件的统计结果,需再次进行加工处理求总和,但运行时间大篇幅缩短。
(25)需改权限组
lsof +L1
5、上传下载
(1)本地和服务器之间文件传输
rz sz 上传下载
上传失败使用rz -bey方式
(2)sftp方式上传下载(上传下载都需要挪文件到/tmp目录下)
连接:sftp -P 2222 wangshida@jumpserver.baijia.com
下载:get -r /home/data /home/my
上传:put /home/fuyatao /var/www/fuyatao/
(3)服务器之间传输文件,跨堡垒机
压缩后发送文件夹
发送端:tar -zcvf - wangshida/ --exclude logs | nc -l 1234
接收端(8秒):nc -i8 172.16.1.244 1234 | tar -zxvf -
单文件发送
接收方:nc -l 10086 > test-gql.baijiahulian.com.conf
发送方:nc -n 172.16.34.69 10086 < test-gql.baijiahulian.com.conf
(4)scp文件上传下载
A在a服务器执行: nc -l 1234 < file 然后B在b上执行nc a 1234 > file 即可通过协议将文件以流形式传递。 1234不是专属端口,可根据情况随意指定, 只要当前在a端没有被占用即可,但要保证两边一致。因为以流形式传递,权限不会附带,在b端都是普通的文本文件,默认权限644.
如果传输目录,可边压缩边传输边解压,a端执行 tar -zcvf - dir | nc -l 1234, b端执行 nc a 1234 | tar -zxvf -
6、代码shell
(1)生成连续数字(seq)
seq 20210901 20210920
(2)管道过滤器,一般结合管道符(|)使用(xargs)
文本打印成一行输出(不带参数)
seq 20210901 20210920 | xargs
文本一行三列输出(-n)
seq 20210901 20210920 | xargs -n3
文本根据界定符分割(dX单个字符X)
echo "nameXnameXnameXname" | xargs -dX
查找所有jpg文件,并压缩它们
find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
批量删除文件(只能一个一个月删除)
seq 20210909 20210920|xargs -n1 -i rm -r /home/ubuntu/test/{}
seq 20210501 20210531 | xargs -n1 -i hdfs dfs -rm -r /user/hive/warehouse/dw.db/logbak/batchEventLog/dt={}
(3)日期段删除数据
date -f <(seq -f%.0f 20210901 20211130) +%Y%m%d 2>/dev/null | xargs -n1 -i hdfs dfs -rm -r /user/hive/warehouse/dw.db/logbak/gsLog/dt={}
(4)curl模拟请求(可用postman生成)
(5)文件对比,需要先对文件排序去重。
区分大小写:comm <(sort a.txt|uniq) <(sort b.txt|uniq)
不区分大小写:comm <(sort a.txt|uniq -d -i) <(sort b.txt|uniq -d -i)
统计重复次数:uniq -c uniq_file.txt
(6)文件对比,不需要先去重
文件去重:awk '(NR==FNR){a[$1]=1}(NR>FNR && !a[$1]){print $1}' <(cat test1|uniq) <(cat test2|uniq)
文件内大小写去重: awk '(NR==FNR){a[tolower($1)]=1}(NR>FNR && !a[tolower($1)]){print $1}' <(cat test1|uniq -i) <(cat test2|uniq)
7、系统管理优化
(1) 修改权限,支持worker用户切换root
root用户修改:/etc/sudoers
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
下面新增
worker ALL=(ALL) NOPASSWD: ALL,ALL
8、堡垒机登录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南