Linux常用命令总结(持续更新,最近更新2021-9-7)


1. 过滤掉空行和注释行

$ grep -Ev '^$|[#;]' filename

2. 杀死僵尸进程

$ ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

3. 生成随机数

 $ openssl rand -base64 8 
 $ openssl rand -base64 80

4. 查看CPU核数

$ cat /proc/cpuinfo| grep "processor"| wc -l

5. 统计访问Nginx的IP数

$ awk '{print $1}' access.log | sort -n | uniq | wc -l

6. 对一列数字求和

$ seq 1 5 | awk '{sum+=$1} END{print sum}'

7. 统计每个用户的进程占用了多少内存

 $ ps -aux | awk 'NR!=1{a[$1]+=$6} END {for (i in a) print i ", " a[i]/1024"M";}'

8. 释放内存

$ echo 1 > /proc/sys/vm/drop_caches # 释放页缓存
$ echo 2 > /proc/sys/vm/drop_caches # 释放目录和inodes
$ echo 3 > /proc/sys/vm/drop_caches # 释放所有缓存

9. vim常用操作

  • ctrl + d:向下翻半页
  • ctrl + u:向上翻半页
  • ctrl + 4:光标移到一行最左端
  • ctrl + 6:光标移到一行最右端
  • zz:让光标所在行处于屏幕中央
  • zt:让光标所在的行居屏幕最上面
  • zb:让光标所在的行居屏幕最下面
  • ctrl + G:移动到文件末尾
  • gg:移动到文件首行
  • u:撤销最近一次的操作
  • y:复制当前行,会复制换行符
  • yy:只复制当前行内容
  • yyp:复制当前行到下一行
  • ddp:当前行和下一行交换位置

10. vim替换操作

# 替换当前行第一个tom为jerry
:s/tom/jerry/

# 替换当前行所有的tom为jerry
:s/tom/jerry/g

# 替换从第n行到最后一行中,每一行的第一个tom为jerry
:n,$s/tom/jerry/

# 替换从第n行到最后一行中,每一行的每个tom为jerry
:n,$s/tom/jerry/g

11. 在shell中发起一个curl带变量的post请求

有时候,需要在shell中用curl命令发起一个post请求,请求数据是json格式并且json的字段名和值都是变量,这时候可以这样做:

#!/bin/bash
username="syushin"
password="123456"
curl http://192.168.1.10:8888/login.html  \
-H "Accept: application/json" \
-H "Content-Type: application/json" \  
-d '{
    "name": '"username"',
    "pwd": '"password"'',
}' 

变量格式: '"变量名"'

12. 批量删除文件

$ find ./ -type f -name "*.txt" | xargs rm 

$ find ./ -type f -name "*.txt" -exec rm -f {} \;

$ find ./ -type -f -name "*.txt" -delete

13. 批量备份文件

[root@web syushin]# ls
1.txt  2.txt  3.txt  4.txt  5.txt  backup
[root@web syushin]# ls backup/
[root@web syushin]# find ./ -type f -name "*.txt" | xargs -i cp -a {} backup/
[root@web syushin]# ls backup/
1.txt  2.txt  3.txt  4.txt  5.txt

14. date命令去掉无用的0

比如日期 2021-09-07,去掉0就变成了 2021-9-7,只需要在 %m 中间加 - 即可,如下:

$ date +%Y-%m-%d
2021-09-07

$ date +%Y-%-m-%-d
2021-9-7