本文目录导读:

#!/bin/bash
# 定时清理无效动态链接脚本
# 功能:扫描指定目录中的符号链接,删除无效(目标不存在)的链接
# 配置区域
SCAN_DIR="/path/to/your/symlinks" # 要扫描的目录(可改为实际路径)
LOG_FILE="/var/log/clean_broken_links.log" # 日志文件路径
DRY_RUN=false # 设为 true 时只输出不删除(测试用)
# 函数:记录日志
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}
# 检查扫描目录是否存在
if [ ! -d "$SCAN_DIR" ]; then
echo "错误:目录 $SCAN_DIR 不存在!" >&2
exit 1
fi
log_message "开始扫描目录:$SCAN_DIR"
# 查找无效的符号链接
# 使用 -L 判断符号链接是否损坏(-L 对损坏链接返回 false)
invalid_links=$(find "$SCAN_DIR" -type l ! -exec test -e {} \; -print 2>/dev/null)
if [ -z "$invalid_links" ]; then
log_message "没有发现无效链接。"
else
log_message "发现以下无效链接:"
echo "$invalid_links" | while IFS= read -r link; do
log_message " 正在处理:$link"
if [ "$DRY_RUN" = false ]; then
# 删除无效链接
rm -f "$link"
if [ $? -eq 0 ]; then
log_message " 已删除:$link"
else
log_message " 删除失败:$link"
fi
else
log_message " [测试模式] 将要删除:$link"
fi
done
fi
log_message "清理完成。"
如何使用
-
保存脚本
将上述内容保存为clean_broken_links.sh,并赋予执行权限:chmod +x clean_broken_links.sh
-
修改配置
- 将
SCAN_DIR改为你要检查的实际目录(/usr/local/bin)。 - 可选:调整
LOG_FILE的路径。 - 首次运行时建议设置
DRY_RUN=true,只查看将删除哪些文件而不实际删除。
- 将
-
测试运行
./clean_broken_links.sh
-
设置定时任务(cron)
使用crontab -e添加以下一行(每天凌晨3点执行):0 3 * * * /path/to/clean_broken_links.sh
也可根据需要调整时间(例如每小时执行:
0 * * * *)。
其他说明
- 查找无效链接的原理
使用find -type l找到符号链接,再用! -exec test -e {} \;测试目标是否存在,如果目标不存在,则视为无效链接。 - 日志记录
所有操作均记录到日志文件,方便事后审计。 - 安全提醒
该脚本会直接删除无效符号链接,请确保扫描目录正确,并先以DRY_RUN=true模式验证。
如果你需要更复杂的场景(如递归清理、按时间过滤等),可以在 find 命令中增加参数,
# 只清理7天前失效的链接
find "$SCAN_DIR" -type l ! -exec test -e {} \; -mtime +7 -delete
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播