一些运维技巧-抖音

  • 批量删除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

image

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

image

  • 大型日志文件不重启程序挪动别迁移
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系统,同步yum包
ssh root@192.168.1.30 "rpm -qa" | xargs yum -y install | grep -v "^Package"
  • 直观对比两个目录文件的差异
[root@localhost ~]# ls -1 demo demo1
demo:
1000
2000
4000
5000
7777
8888

demo1:
1000
1111
2000
2222
4000
5000
8888

[root@localhost ~]# diff <(cd demo && find | sort) <(cd demo1 && find|sort) -y | grep -E '>|<'
							      >	./1111
							      >	./2222
./7777						      <

  • 优雅递归显示指定位置的所有文件
[root@localhost ~]# cat .bashrc 
# .bashrc
lsr() { find "${@:-.}" -print0 | sort -z | xargs -0 ls -dlha --color=auto; }
  • 查看系统安装时间
[root@localhost ~]# ls -lct /etc/os-release | awk '{print $6,$7,$8}'
6月 29 2021

[root@localhost ~]# rpm -qi basesystem
Name        : basesystem
Version     : 10.0
Release     : 7.el7.centos
Architecture: noarch
Install Date: 2021年06月29日 星期二 15时35分22秒

  • 根据当前用户的登录IP,输出指定内容,根据需求进行扩展
[root@localhost ~]# cat .bashrc 
# .bashrc
if [ "${SSH_CLIENT%% *}" == "192.168.2.14" ];then
	echo "匹配到IP"
fi 

  • 登录服务器并同时记录操作日志
ssh root@192.168.1.30 | tee ssh.log
  • 将当前终端的输入和输出推送给另一个控制台(只做显示)
script /dev/null | tee /dev/pts/5
posted @ 2024-04-28 14:16  ForLivetoLearn  阅读(1)  评论(0编辑  收藏  举报