Linux命令积累

  • ps -aux | sort -k4nr | head -n 10 #内存占用前10进程
  • DIR=$(dirname $(readlink -f $0)) #获取当前shell所在文件夹
  • grep -rn ./ test #查询当前文件夹中含有test字符串的文件

常用的命令连接符号有四个:

  • &&:前一个指令执行成功,后面的指令才继续执行,就像进行与操作一样
  • ||:前一个命令执行失败,后面的才继续执行,类似于或操作
  • &:直接连接多个命令
  • |:管道符,将前一个命令的输出作为下一个命令的输入
  • ;:直接连接多个命令

一些 Linux 命令:

  • stat filename #查看文件修改时间

  • cat work/es_index_search_slowlog/es_index_search_slowlog-2019-09-17-1.log | awk '{print $4 , "index:", $3, "query:", $10}' | grep took | grep -v 'ms]' | uniq -u | sort -r | head -100 > sublime_files/slowlog

  • uname -a #查看内核/操作系统/CPU 信息的 linux 系统信息命令
  • head -n 1 /etc/issue #查看操作系统版本,是数字 1 不是字母 L

  • grep MemTotal /proc/meminfo # 查看内存总量
  • grep MemFree /proc/meminfo # 查看空闲内存量
  • tailf /tmp/gh_normal_log | grep -vnG 'Scroll' # -v反选不匹配-G正则-n显示行号

  • fdisk -l |grep Disk # 硬盘大小
  • df -h # 查看各分区使用情况
  • fdisk -l # 查看所有分区
  • swapon -s # 查看所有交换分区
  • free -m # 查看内存使用量和交换区使用量
  • ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20 # 查看内存占用高的前20

  • hostname # 查看计算机名的linux系统信息命令
  • env # 查看环境变量资源
  • export OS_STATUS="PRE" # 定义环境变量 export OS_STATUS="PRE" && php artisan inspire
  • export # 查看当前所有的环境变量

  • uptime # 查看系统运行时间、用户数、负载
  • mount | column -t # 查看挂接的分区状态

  • hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
  • dmesg | grep IDE # 查看启动时IDE设备检测状况网络

  • netstat -lntp # 查看所有监听端口
  • netstat -antp # 查看所有已经建立的连接
  • netstat -s # 查看网络统计信息进程
  • ps -ef # 查看所有进程
  • ifconfig # 查看所有网络接口的属性
  • route -n # 查看路由表
  • iptables -L # 查看防火墙设置

  • top # 实时显示进程状态用户
  • w # 查看活动用户
  • id # 查看指定用户信息
  • last # 查看用户登录日志
  • cut -d: -f1 /etc/passwd # 查看系统所有用户
  • cut -d: -f1 /etc/group # 查看系统所有组
  • usermod -a -G root anna # 将anna用户加入root用户组
  • groups anna #查看anna用户组

  • crontab -l # 查看当前用户的计划任务服务
  • chkconfig –list # 列出所有系统服务
  • chkconfig –list | grep on # 列出所有启动的系统服务程序

  • rpm -qa# 查看所有安装的软件包

  • cat /proc/cpuinfo # 查看CPU相关参数的linux系统命令
  • cat /proc/partitions #查看linux硬盘和分区信息的系统信息命令
  • cat /proc/meminfo # 查看linux系统内存信息的linux系统命令
  • cat /proc/version # 查看版本,类似uname -r
  • cat /proc/ioports # 查看设备io端口
  • cat /proc/interrupts # 查看中断
  • cat /proc/pci # 查看pci设备的信息
  • cat /proc/swaps # 查看所有swap分区的信息
  • cat /proc/meminfo |grep MemTotal # 内存大小
  • cat /proc/cpuinfo # 查看 CPU 信息的 linux 系统信息命令
  • cat /etc/shadow # 查看系统所有用户密码文件
  • cat /proc/loadavg # 查看系统负载磁盘和分区
  • cat /etc/system-release # 查看系统版本号
  • head -n 1 /etc/issue # 查看系统版本
  • cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看物理CPU个数
  • cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看每个物理CPU中core的个数(即核数)
  • 总核数 = 物理CPU个数 X 每颗物理CPU的核数
  • 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
  • cat /proc/cpuinfo| grep "processor"| wc -l # 查看逻辑CPU的个数

  • find /var/html/ -ctime -10 -name "*.php" # 查找最近 10 天里修改的 php 文件

sort 对数据进行排序
参数 释义 示例
-r 倒叙排序(默认正序),默认以第一列进行排序 cat access.log|sort -r
-k 列号 按照第"列号"进行字符串排序 cat accsess.log|sort -r -k 9
-n 排序按照数字型进行排序 awk '{print $1}' access.log|sort|uniq -c|sort -r -k 1 -n

head/tail命令使用
参数 释义 示例
-c 字节数 输出头(尾)‘字节数’个字节到标准输出中 `awk '{print $1}' access.log sort -
r uniq -c head -c 100`
-n 行数 输出头(尾)‘行数’个行到标准输出中 awk '{print $1}' access.log|sort -r|uniq -c|head -n 10

xargs 命令使用
参数 释义 示例
-I {} 每次传入一个参数,以{}作为参数传入位置 cat ip.txt|xargs -I {} curl 'http://freeapi.ipip.net/'{}
-t 输出前展示拼接命令 cat ip.txt|xargs -t -I {} curl 'http://freeapi.ipip.net/'{}
-n 个数 每次传入的参数个数,在-I 的情况下不生效 cat ip.txt|xargs -n 1 ping -c 1 -t

统计代码行数
  • git log --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "增加的行数:%s 删除的行数:%s 总行数: %s\n",add,subs,loc }'

统计相同索引数量

grep, egrep, fgrep - print lines matching a pattern

grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
      --colour=auto:对匹配到的文本着色
      -i:ignorecase 忽略字符大小写
      -o:仅显示匹配到的字符串本身
      -v:反向显示
      -E:支持扩展的正则表达式
      -q:静默模式 不输出任何信息
      -A#:after 后#行
      -B#:before 前#行
      -C#:context 前后#行

要先sortuniq,因为uniq是判断上一行和下一行来判断是否唯一的。uniq -c 统计相同的数量。

cat es-2019-10-15-20.log | grep '2019-10-15T10:5' | egrep -o 'indices: (.*), source' | sort | uniq -c | sort -rn