Ubuntu定期自动清理的实现方法
清理脚本需包含常用的系统清理命令,用于删除无用缓存、临时文件、旧内核等。以下是一个示例脚本(保存为/home/user/cleanup.sh
):
#!/bin/bash
# 清理APT缓存(保留最新版本,删除旧包)
sudo apt autoclean && sudo apt clean
# 清理临时文件
sudo rm -rf /tmp/*
# 清理系统日志(保留最近7天)
sudo journalctl --vacuum-time=7d
# 清理旧内核(保留当前及最近2个,避免误删)
current_kernel=$(uname -r)
kernels_to_remove=$(dpkg --list | grep 'ii' | grep -E 'linux-image-[0-9]' | awk '{print $2}' | sort -V | grep -v "$current_kernel" | head -n -2)
if [ -n "$kernels_to_remove" ]; then
sudo apt purge -y $kernels_to_remove
fi
# 清理用户缓存(尊重隐私,仅清理/home目录下用户的.cache)
for user_dir in /home/*; do
if [ "$user_dir" != "/home/systemd" ] && [ "$user_dir" != "/home/messagebus" ]; then
find "$user_dir/.cache" -type f -mtime +7 -delete 2>/dev/null
fi
done
# 清理无用配置文件
sudo dpkg --purge $(dpkg -l | grep 'rc' | awk '{print $2}')
echo "系统自动清理完成!"
关键说明:
chmod +x /home/user/cleanup.sh
;./cleanup.sh
),确认无误后再设置定时任务。Cron是Ubuntu默认的定时任务工具,可通过crontab -e
命令编辑当前用户的定时任务。以下是常见场景的配置示例:
0 3 * * * /home/user/cleanup.sh
0 2 * * 0 /home/user/cleanup.sh
0 * * * * /home/user/cleanup.sh
注意事项:
sudo crontab -e
编辑root用户的cron表;crontab -l
查看当前用户的定时任务列表。若不想手动写脚本,可使用以下工具实现自动清理:
ubuntu-cleaner
命令)。sudo add-apt-repository ppa:gerardpuig/ppa
sudo apt update
sudo apt install ubuntu-cleaner
sudo apt install bleachbit
sudo add-apt-repository ppa:oguzhaninan/stacer
sudo apt update
sudo apt install stacer
提示:工具虽方便,但手动编写的脚本更灵活,可根据需求定制清理项。
以下是脚本中常用的清理命令,覆盖了大部分清理场景:
sudo apt autoclean
(删除旧包缓存)、sudo apt clean
(删除所有包缓存);sudo rm -rf /tmp/*
(删除/tmp目录下所有文件);sudo journalctl --vacuum-size=100M
(保留100MB日志)、sudo journalctl --vacuum-time=1w
(保留1周日志);sudo apt autoremove --purge
(删除无用依赖及旧内核);sudo sync && echo 3 > /proc/sys/vm/drop_caches
(清理页面缓存、dentries等)。/home
目录及重要配置文件,避免误删;sudo
或在root用户的cron表中设置。