1. 背景
我的初衷是用这篇文章代替linux手册,主要用来记录一些难用的linux命令或者技巧命令,方便使用的时候查询到
1. 命令
ls -ltrd arthas
有时候我需要在一个文件夹下找到所有的复合条件的文件夹,这个时候需要-d
制造一个大的文件
cat file1.log file2.log >> file3.log
zip file3.log 产生file3.log.gz 观察他的modified time,然后再去stat file3.log.gz 观察modified time, gunzip flumer1.log.gz
结论:完成的时候会变成原来的modified time
统计这样一个命令,第一列出现的次数
cat test11.log | awk '{a[1] + 1}END{for(i in a){print i " "a[i]}}' 以数值的方式在第二列进行排列
1. ps -ef | grep java 前面有启动时间,如何查看服务的启动时间
2. find ./ -type d -iname "201*" | xargs rm -rf : 查找某个文件夹下满足条件的文件
夹,进行删除
5. which touch
6. export $PATH: 查看本地的PATH环境变量
7. find $TEMP_DIR/ -type f -mtime +1 -name "*" -exec rm -rf {} \;
查找一天之前修改的文件并且删除
8. find . -name "*.c"
将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
-ctime n : 在过去 n 天内创建的文件
-mtime n : 在过去 n 天内修改过的文件
9. lscpu : 平时我们说的48X6C
10.
ls -1t | head -5
ls -1t | tail -5
less xxx.log | grep "09:44:54" | grep "consumed size" | awk '{print $11}'
lsof -p 25827 | grep TCP | grep ESTA | wc -l :查看这台机器上有多少个TCP连接
cat sort.log| sort | uniq 去重
查看前10条,grep ERROR xxx.log | head
curl "http://localhost:10003/dyw?slsId=2173" 一定要加”“
tar -czvf aaa.tar.gz aaa
tar -zxvf aaa.tar.gz
wget "xxxx.tar.gz" -O xxxx.tar.gz
1. awk命令
awk '{print 4}' log.txt
awk -F , '{print 2}' log.txt
awk '$1>2' log.txt
awk '1==2 {print 1,$3}' log.txt
awk '1>2 && 2=="Are" {print 2,$3}' log.txt
NR number of record
一个横行叫做一个record,NR 横行的数量
一个竖行叫做field, NF 竖行的数量
awk 认为空格就是把左边的字符和右边的字符拼接起来
, 表示分隔符 awk '{print NR "\t" $0}' coins.log
awk '{print NF "\t" $0}' coins.log 打印出每行有多少列
awk '3==1986{print 3}' coins.log 过滤条件写在大括号前面
awk '1=="gold"{print 1}' coins.log
awk 'NR==7{print NR "\t" $0}' coins.log
awk 'BEGIN{FS=","} {print 2}' FS是输入分隔符, OFS是输出分隔符
awk 'BEGIN{FS=","; OFS=" "} {print 2}'
awk '{print NR, FILENAME, 0}' coins.log data.log, 两个文件放在一起输出,FILENAME 是内置变量 awk '{3="XXXX"; print 0}' coins.log , 3 第三列的值改变一下
awk '{print $NF}' coins.log, 打印最后一列
awk '{print $(NF-1)}' coins.log , 打印倒数第二列
awk '{a=1; b=2; print a + b}'
awk '{a=1; b=2; print a b}'
awk '{a=1;b=2; print (a + b) b}'
awk '/a.c/{print $0}' data.log .表示任意一个字符
awk '/a.c/{print $0}' data.log 只想匹配到a.c
^abc 以abc开始 abc$ 以abc结尾
a[xyz]c, xyz 匹配其中一个就可以
a[a-z]c, a到z 匹配其中一个就可以
/a*b/ 一个或者多个或者0个 a
/a+b/ 至少一个a
/a?b/ a可以有可以没有
/ab{3}c/ b必须出现3次
/ab{3, 4}c/ b可以出现3次到4次
sed命令
$0:是指你所写的shell脚本本身的名字;
$1:是指你写的shell脚本所传入的第一个参数 ;
$2:是指你写的shell脚本所传入的第二个参数
nl = Number of Lines
nl testfile | sed '2,5d'
sed -e 4a\newLine testfile
nl testfile | sed '2d'
nl testfile | sed '3,$d'
在第二行后(即加在第三行) 加上drink tea? 字样:
$ nl testfile | sed '2a drink tea'
如果是要在第二行前,命令如下:
$ nl testfile | sed '2i drink tea'
如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
$ nl testfile | sed '2a Drink tea or ......\
drink beer ?'
将第 2-5 行的内容取代成为 No 2-5 number 呢?
$ nl testfile | sed '2,5c No 2-5 number'
仅列出 testfile 文件内的第 5-7 行:
$ nl testfile | sed -n '5,7p'
nl testfile | sed -n '/oo/p'
删除 testfile 所有包含 oo 的行,其他行输出
$ nl testfile | sed '/oo/d'
g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件:
sed 's/要被取代的字串/新的字串/g'
将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换,然后将该文件内容输出到标准输出:
sed -e 's/oo/kk/' testfile
sort命令
sort -u test.log 去除重复的行
sort -ur test.log 降序去除重复的行
sort -ur test.log > test1.log
sort -ur test.log -o test.log 重写文件
sort -n number.log 以数值的方式排序
guge 50 3000
sohu 100 4500
baidu 100 5000
google 110 5000
sort -n -k 2 -t : facebook.txt
用-k来指定列数, sort提供了-t选项,后面可以设定间隔符
sort -n -t ' ' -k 2 facebook.txt
sort -n -t ' ' -k 2 -k 3 facebook.txt
让facebook.txt按照公司人数排序 ,人数相同的按照员工平均工资升序排序
sort -n -t ' ' -k 3r -k 2 facebook.txt
让facebook.txt按照员工工资降序排序,如果员工人数相同的,则按照公司人数升序排序
sort -t ' ' -k 1.2,1.2 -k 3,3nr facebook.txt
只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序
https://blog.csdn.net/m0_52892985/article/details/123892914
uniq 命令
uniq testfile 使用 uniq 命令删除重复的行
uniq -c testfile 在行首显示该行重复出现的次数
sort testfile1 | uniq
sort testfile1 | uniq -d 在文件中找出重复的行:
lscpu命令
cpus = 物理cpu数目 X 每核CPU数 X 每核超线程数
通常我们说的多少核就是cpus
常用的日志查询命令
tailf
grep "info" xxx.log | grep "时间"
linux磁盘空间100%的处理命令
du -sh * 查看当前目录下磁盘的占用情况, 查看某个文件夹下各个文件的大小
df -h : 查看总的磁盘量 disk free
后台运行我们的jar
nohup java -jar xxx.jar &
解决方案:ssh-keygen -R 49.234.28.122