docker cli

kill -9 $(ps -ef|grep caster|awk 'NR==1 {print $3}')
docker rmi $(docker images | grep '<none>'| awk '{print $3}')
docker rmi $(docker images | grep '<none>'| awk '{next}{print $3}')
umount $(df -h|grep danaos|awk '{print $6}')

shuf -n 1000000 alluser_id | awk '{print $2}' > test_random_1000000
awk 'END{print NR}' test_random_1000000

docker inspect --format '{{ .NetworkSettings.IPAddress }}' centos

docker run -itd --name=centos --privileged=true -v /sys/fs/cgroup:/sys/fs/cgroup -p 8888:8888 centos:centos7 /usr/sbin/init

开通防火墙端口

iptables -I INPUT -p tcp --dport 8888 -j ACCEPT

允许远程主机访问本机的 80 端口

iptables -F
iptables -X
iptables -A INPUT -p tcp --dport 80 -j accept
iptables -A INPUT -p tcp -j REJECT

# 或者
iptables -A INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT

查看最大空间占用目录

sudo du -h --exclude="mnt*" --exclude="proc*" -d 1 /

监控 linux 磁盘根分区

  • 打印根分区大小

    # 注解:awk ‘{print $5}’意思是打印第 5 个域,-F 的意思为分隔,例如以 % 分隔,简单意思就是去掉百分号,awk –F. ‘{print $1}’分隔点. 号
    df -h |sed -n '//$/p'|awk '{print $5}'|awk –F ”%” '{print $1}'
  • if 条件判断该大小是否大于 90,如果大于 90 则发送邮件报警

    while sleep 5m
    do
    for i in `df -h |sed -n '//$/p' |awk '{print $5}' |sed 's/%//g'`
    do
    echo $i
    if [$i -ge 90];then
    echo “More than 90% Linux of disk space ,Please LinuxSA Check Linux Disk !” |mail -s “Warn Linux / Parts is $i%”
    XXX@XXX.XX
    fi
    done
    done

网络抓包 tcpdump

# 抓取 56.7 通过 80 请求的数据包。
tcpdump -nn host 192.168.56.7 and port 80

# 80 排除 0.22 80 端口!
tcpdump -nn host 192.168.56.7 or ! host 192.168.0.22 and port

# tcp/ip 7 层协议物理层–数据链路层 - 网络层 - 传输层 - 会话层 - 表示层 - 应用层。

使用 snmpd 抓取版本为 v2 的 cacti 数据方式

snmpwalk -v2c -c public 192.168.0.241

CPU 满载测试用例

# 由于连续执行N个 (N是CPU个数) 的 dd 命令, 且使用率为100%, 这时调度器会调度每个 dd 命令在不同的 CPU 上处理;最终就实现所有 CPU 占用率 100%

for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done

说明:

  • cat /proc/cpuinfo |grep "physical id" | wc -l 可以获得 CPU 的个数, 我们将其表示为 N.
  • seq 1 N 用来生成1到N之间的数字
  • for i in seq 1 N; 就是循环执行命令, 从1到N
  • dd if=/dev/zero of=/dev/null 执行 dd 命令, 输出到 /dev/null, 实际上只占用 CPU, 没有 IO 操作.

另外,上述程序的结束可以使用:

  1. fg 后按 ctrl + C (因为该命令是放在后台执行)
  2. pkill -9 dd

查找当前目录下以 .tar 的文件移动到指定目录

find . -name “*.tar” -exec mv {} ./backup/ 

# 注解:find –name 主要用于查找某个文件名字,-exec 、xargs 可以用来承接前面的结果,然后将要执行的动作,一般跟 find 在一起用的很多,find 使用我们可以延伸 - mtime 查找修改时间、-type 是指定对象类型(常见包括 f 代表文件、d 代表目录),-size 指定大小,例如经常用到的:查找当前目录 30 天以前大于 100M 的 LOG 文件并删除
find . -name "*.log" –mtime +30 –typef –size +100M |xargs rm –rf {}

批量解压当前目录下 .zip 的所有文件到指定目录

# 注解:forI in (command);do … done 为 for 循环的一个常用格式,其中 I 为变量,可以自己指定
for i in `find . –name “*.zip”–type f `
do
unzip –d $i /data/www/img/
done

判断目录是否存在

# 注解:if…;then …else ..fi:为 if 条件语句,! 叹号表示反义 “不存在 “,-d 代表目录。
if
[! –d /data/backup/];then
Mkdir–p /data/backup/
else
echo "The Directory alreadyexists,please exit"
fi

nginx 日志统计前10个 IP

cd /home/logs/nginx/default

# 注解:sort 排序、uniq(检查及删除文本文件中重复出现的行列 )
sort -m -k 4 -o access.logok access.1 access.2 access.3 .....

cat access.log |awk '{print $1}'|sort -n|uniq -c|sort -nr |head -10

打印出一个文件里面最大和最小值

cat a.txt |sort -nr|awk ‘{}END{print} NR==1′

cat a.txt |sort -nr |awk ‘END{print} NR==1′

# 这个才是真正的打印最大最小值:
sed ‘s/ / /g’ a.txt |sort -nr|sed -n ’1p;$p

查找3天前创建且后缀是 \*.log 的文件并删除

find . -mtime +3  -name "*.log" |xargs rm -rf {} ;

将某目录下大于 100k 的文件移动至 /tmp

find . -size +100k -exec mv {} /tmp ;

sed 常用命令

# 如何去掉行首的. 字符: 
sed -i 's/^.//g' test.txt

# 在行首添加一个 a 字符:
sed 's/^/a/g' test.txt

# 在行尾添加一个 a 字符:
sed 's/$/a/' tets.txt

# 在特定行后添加一个 c 字符:
sed '/wuguangke/ac' test.txt

#在行前加入一个 c 字符:
sed '/wuguangke/ic' test.txt

# 修改文本中以 jk 结尾的替换成 yz
sed -e ‘s/jk$/yz/g’ b.txt

# sed 冒号方式
sed -i ‘s:/tmp:/tmp/abc/:g’test.txt # 意思是将 /tmp 改成 /tmp/abc/