一些运维技巧-抖音
- 批量删除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系统,同步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
初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能