目录空间
- 目录中的目录大小
du -x --max-depth=1 | sort -k1 -rn | head
# 增加可读性
du -x --max-depth=1 | sort -k1 -rn | awk '{print $1/1024/1024"M "$2}' | head
- 目录中文件数量汇总
find -type f | awk -F "/" -v OFS="/" '{$NF="";dir[$0]++}END{for(i in dir)print dir[i]" "i}' | sort -k1 -rn | head
- 统计一个文件下可执行文件个数
ll -F | grep "*$"
-rwxr-xr-x 1 root root 1482 Jun 5 16:36 shell.py*
网络
- 网络状态分析
netstat -n | awk '/^tcp/{++stat[$NF]}END{for(a in stat) print a,stat[a]}'
- 用tcpdump嗅探80端口的访问
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr
- 服务间网络测速iperf
# 服务端
iperf -s
# 客户端 5s
iperf -c ip -t 5
- 路由信息
route add default gw 192.168.1.1 [dev eth0]
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1 [dev eth0]
route del default gw
route add -net 10.0.2.0 netmask 255.255.255.0 dev eth1
route del -net 10.0.2.0 [netmask 255.255.255.0 dev eth1]
文件操作
- 在文件的指定行(n)插入指定内容,执行后,在a文件的第n行插入
echo "haha"
sed -i "niecho "haha"" a
进程
# 查看redis的状态
# 进程ID 终端 用户 进程名 开始时间 运行时间
ps -eo pid,tty,user,comm,lstart,etime | grep redis
查看程序生成的pid
pidof prog_name
pgrep prog_name
查看该进程打开的文件
lsof -p pid
lsof -c prog_name
或者根据pid找到 ll /proc/<pid>/fd/
查看内存分配
cat /proc/pid/maps
查看堆栈(安装gdb)
pstack pid
查看发出的系统调用
strace -p pid
查看调用库函数(安装ltrace)
ltrace -p pid
软件管理
# 查看这个软件的依赖
yum deplist xxx | grep provider | sort | uniq -c
# 查看这个文件是由哪个包生成的
rpm -qf xxx
# 下载软件的所有依赖,这个解决的依赖没有yum deplist涉及的依赖完整
yumdownloader s3cmd --resolve --destdir=.
# 这个这个rpm包附带的脚本干了什么
rpm -qp --scripts httpd-2.4.6-93.el7.centos.x86_64.rpm
系统信息
- 服务器版本
# 方法1
grep 'DMI' /var/log/dmesg
#方法2
dmidecode |grep -A4 'System Information'
- 查看服务器序列号
dmidecode | grep "Serial"
其他
- 多线程压缩工具
# 安装 yum install -y pigz # 使用 tar -cvf - xxx/ | pigz -p 16 > xxx.tar.gz
将ISO挂载到本地
mount /media/files/CentOS-7-x86_64-DVD-1611.iso /mnt/cdrom/
ssl 证书
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -subj /CN=domain -keyout /tmp/ca.key -out /tmp/ca.crt
端口映射
ssh <tunnelhost> [-p port] [-l user] -f -N -T -L [localhost]:<localport>:<targethost>:<targetport>
将本地端口映射到远程端口,即访问本都端口就能访问远程的机器
AWK
1、求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'
2、求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'
3、求最大值
cat data|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'
4、求最小值(min的初始值设置一个超大数即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'