工作中使用到的linux命令总结

245 阅读4分钟

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

image.png

统计这样一个命令,第一列出现的次数

cat test11.log | awk '{a[1]=a[1] = 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 1,1,4}' log.txt

awk -F , '{print 1,1,2}' log.txt

awk '$1>2' log.txt

awk '1==2 {print 1,$3}' log.txt

awk '1>2 && 2=="Are" {print 1,1,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 1,1, 2}' FS是输入分隔符, OFS是输出分隔符

awk 'BEGIN{FS=","; OFS=" "} {print 1,1, 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

image.png

常用的日志查询命令

tailf
grep "info"  xxx.log | grep "时间"

linux磁盘空间100%的处理命令

du -sh * 查看当前目录下磁盘的占用情况, 查看某个文件夹下各个文件的大小

df -h : 查看总的磁盘量 disk free

后台运行我们的jar

nohup java -jar xxx.jar &

image.png

解决方案:ssh-keygen -R 49.234.28.122