记一次修理bug–
问题:/dev/mapper/centos-root爆满后强制断电导致/dev/mapper/centos-root只读
师姐说服务器不能操作了,我发现远程软件断掉了,xshell能正常连接,一开始以为是远程软件的问题。去现场发现物理机键鼠都没有反应,于是决定断电重启。(!!!)
重启后就一直处于开机状态,一直在循环转圈,不能正常开机登录。
按e
进入单用户模式
添加\init=/bin/sh
进入单用户模式
mount
发现/dev/mapper/centos-root只读
输入mount -o remount,rw /
赋予读写权限(这里可以改root密码)
出现方块是因为中文,可以先改成英文LANG=en.US
df-h
du -h --max-depth=1 /path | sort -rh
fdisk -l
检查大文件,删除了一些cache文件
总结:/centos-root爆满导致不能写入,强制断电导致/centos-root文件系统受损只读,不能删除。
后续扩容
内存报警脚本
vim DisksUsed.sh
创建脚本
#!/bin/bash
# author:yr
# edited:2024.05.07
# description: 磁盘使用率大于90%时报警,针对/dev/mapper/centos-root和/dev/mapper/centos-home
# 设置退出状态码
EXIT_SUCCESS=0
EXIT_ERROR=1
# 检查的文件系统列表
filesystems_to_check=(
"/dev/mapper/centos-root"
"/dev/mapper/centos-home"
)
# 遍历文件系统列表并检查使用率
for filesystem in "${filesystems_to_check[@]}"; do
# 使用df命令获取特定文件系统的使用率,并提取百分比部分(去掉%)
usage=$(df -h "$filesystem" | tail -n 1 | awk '{print $5}' | sed 's/%//')
# 检查df命令是否成功执行且获取到了使用率
if [ -z "$usage" ]; then
echo "Error: Could not get usage for $filesystem"
continue
fi
# 转换使用率为整数(如果需要),并检查是否大于80
if ((10#$usage > 80)); then # 注意:10#前缀确保bash将usage作为十进制数处理
echo "WARNING: The usage of $filesystem is above 80%. Current usage: $usage%" | mail -s "Disk Usage Alert" yourmail@mail.com
fi
done
# 如果所有检查都完成,则退出成功
exit $EXIT_SUCCESS
chomd 755 DisksUsed.sh
给权限
./DisksUsed.sh
运行脚本
crontab -e
编辑crontab作业
0 6 * * * /bin/bash /path/DisksUsed.sh
让其每天6点自动检查
crontab -l
检查是否添加成功crontab作业
Centos终端显示-bash-4.2#的解决方法
链接: link