linux 命令合集


取前缀后缀

  • 给个例子, 自己体会吧:
file_name=name_prefix.1.2.3.4
echo "=================="
echo "${file_name}"     
echo "${file_name%%.*}"     
echo "${file_name%.*}"      
echo "${file_name#*.}"      
echo "${file_name##*.}"     

basename $file_name .4
basename $file_name .3.4 
  • 输出:
==================
name_prefix.1.2.3.4
name_prefix
name_prefix.1.2.3
1.2.3.4
4
name_prefix.1.2.3
name_prefix.1.2

set

  • set -e: 当脚本中任何一个命令执行返回的状态码不为0时就退出整个脚本;(默认脚本运行中某行报错会继续往下执行)。
  • set -u: 当脚本在执行过程中尝试使用未定义过的变量时,报错并退出运行整个脚本(默认会把该变量的值当作空来处理)。这个选项非常重要,想象一下rm -rf ${var1}/
  • set -x: 显示脚本执行过程并将脚本内的变量的值暴露出来;
  • set -o pipefail: 管道命令参与debug断点模式,shell默认会认为管道命令是一个整体,是与 | 的关系,set -o pipefail 更改为与或||,也就是管道命令参与。

du

  • 常用命令:
du -sh . # -s选项,是 --summarize 的缩写形式,其作用是对 du 的每一个给定参数计算其磁盘使用量
         # 而-c选项,是 --total 的缩写形式,它表示的是针对输出的各个对象来计算其磁盘使用量的总和

du -ah --exclude="*/.*" . # 排除隐藏文件

du -ah --max-depth=1 | sort -rh
    # sort -n选项,按数值进行比较,只会傻傻地比较数字,它会认为 98 K大于 2G。
    #      -h选项,会更加聪明,先优先比较单位(G>M>K),然后再对数值进行比较。

lsof

  • 有时会出现这样的情况,磁盘空间(df -Th)显示已经被占满,但是在查看磁盘的具体文件占用情况(du -h --max-depth=1)时,发现磁盘仍然有很大的空余空间。
  • 这是因为虽然文件已被删除,但是一些进程仍然打开这些文件,因此其占用的磁盘空间并没有被释放. 执行lsof 命令显示打开已删除的文件:
  • lsof | grep deleted

CPU

  • 逻辑CPU个数: cat /proc/cpuinfo | grep 'processor' | wc -l

  • 物理CPU个数: cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

  • 每个物理CPU中Core的个数: cat /proc/cpuinfo | grep 'cpu cores' | wc -l

find

  • find / -path /proc -prune -o -path /var -prune -o -path /etc -prune -o -iname AA* -print : 查找 “AA” 开头的文件,并排除 /proc、/var、/etc 目录(不在这3个目录下搜索)

grep

  • grep -r "str" ./ :在当前目录所有文件中下查找 str 字符串

locate

  • 模糊查找:locate -r abc*.log;-r 代表正则匹配

printf

  • printf "%d" 0x4B59 :16进制转10进制

邮件

  • mail:查看邮件列表(没安装会提示 command not found)
  • file:查看一共多少封邮件,键入数字可直接查看对应邮件
  • q:从邮件阅读模式退出

cat /proc/net/tcp

#!/bin/bash
port_hex=`printf "%x\n" $1`
cat /proc/net/tcp | grep -i $port_hex
inode_num=`cat /proc/net/tcp | grep -i $port_hex| awk '{print $10}'`

arr=`ps -e| grep java | awk '{print $1}'`
for this_pid in ${arr[@]};do 
	ls -l /proc/$this_pid/fd/ 2>/dev/null | grep inode_num
	if [ $? -eq 0 ]; then
	   echo $this_pid
	   break
	fi
done

ss

  • ss -lnp
    • l : Display listening sockets;
    • n:Do now try to resolve service names
    • p:Show process using socket

好用的例子

  • ps -aux | sort -rnk 4 | head -20 : 找出当前系统内存使用量较高的进程, 输出的第4列(sort 对第4列排序)就是内存的使用百分比;
  • ps -aux | sort -rnk 3 | head -20 : 找出当前系统CPU使用量较高的进程, 输出的第3列(sort 对第3列排序)为 CPU 的使用百分比;
  • multitail : 同时查看多个日志或数据文件(需要安装);
  • netstat -anlp|grep 8888|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 : 查找8888端口请求数最高的前20个IP,awk -F: - 指定分隔符为:冒号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值