一些运维技巧-抖音
- 批量删除500万个文件
rsync -av --delete empty/ demo/ --exclude-from=exclude.txt
# rsync 快速通用的远程和本地文件复制工具
# empty/ 源目录 空目录,需要带/
# demo/ 目标目录 500万个文件目录,需要带/
# --delete 从目标目录中删除不在源目录的文件
# --exclude-from 从文件列表中排除某些文件, 这个需要接在demo/之后,对demo/生效
# exclude.txt 文件列表,每行一个文件名
[root@localhost ~]# cat exclude.txt
1000
2000
4000
5000
8888
- 修改系统时间
[root@localhost ~]# timedatectl
Local time: 日 2024-04-28 13:56:25 CST
Universal time: 日 2024-04-28 05:56:25 UTC
RTC time: 日 2024-04-28 05:56:25
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: n/a
# Local time本地时间 = Universal timeUTC时间 + timezone偏移量
# RTC 硬件时间 UTC时间和RTC时间需要一致
# 修改时间
date -s "2008-08-08 00:00:00" && hwclock -w
#或
timedatectl set-time "2008-08-08 00:00:00"
- 探测远端端口是否打开
1. telnet 192.168.1.1 80
2. ssh -v 192.168.1.10 -p 80
# 端口开启会有一条显示
debug1: Connection established.
3. echo > /dev/tcp/192.168.1.1/80
# 端口开始不会有输出, 端口没开启会提示
-bash: connect: 拒绝连接
-bash: /dev/tcp/192.168.1.1/80: 拒绝连接
- 模拟网络延迟
# 直接在网卡上增加800ms延迟
tc qdisc add dev ens192 root netem delay 800ms
tc qdisc del dev ens192 root netem delay 800ms
- 统计登录失败的IP
grep -i "failed password" /var/log/secure | awk '{if ($11 ~ /^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) print $11; else print $13}' | uniq -c | sort -nr -k1
- 测试磁盘读写块速度
#!/bin/bash
dd if=/dev/zero of=/var/tmp/infile count=1175000
for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M
do
echo "[块大小 $bs]"
dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs 2>&1 | grep -E '已复制|copied' | awk -F ',|,' '{print "用时/速度:" $2,$3}'
echo ""
done
rm /var/tmp/infile /var/tmp/outfile

- 图形化查看系统服务启动顺序
systemd-analyze plot > boot.svg

- 大型日志文件不重启程序挪动别迁移
gzip -c java.out -c > /tmp/java.out.back && > java.out
- 快速删除解压错误位置的文件
tar -tf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar | xargs rm -rf
- 查找在某个时间段范围内被修改过的文件
find . -type f -newermt "2024-04-28 12:00:00" ! -newermt "2024-04-28 16:38:00"
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!