最近,UBUNTU的環境明顯越來越多軟體都改用snap套件呼叫來替代apt的管理方式。
但是他這個套件有明顯感受到一些缺點。
撇除rkhunter開始明顯監控誤報以外,最大的感受就是硬碟空間忽然被占用許多。
臨時對策,就是定期的把snap版本快照的檔案,已經廢除的就提早刪掉。
參考來源:
https://itsfoss.com/clean-snap-packages/
新增一個腳本指令檔案:
sudo nano /etc/cron.weekly/00-clean-snap.sh
(版本一:)
#!/bin/bash
# file save to /etc/cron.weekly/00-clean-snap.sh
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
snap remove "$snapname" --revision="$revision"
done
(版本二:)
#!/bin/bash
# /etc/cron.weekly/00-clean-snap.sh
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu
# 1. 初始化一個變數來儲存所有清除輸出
CLEANUP_OUTPUT=""
snap list --all | awk '/disabled/{print $1, $3}' |
while read snapname revision; do
# 2. 執行清除,並將輸出附加到變數中
# 注意:這裡將 STDERR (2) 導向 STDOUT (1),以確保錯誤也能被捕獲。
CLEANUP_OUTPUT+=$(snap remove "$snapname" --revision="$revision" 2>&1 $'\n')
done
# 3. 判斷是否有內容
if [ -n "$CLEANUP_OUTPUT" ]; then
# 如果變數非空,則輸出內容 (Anacron 會將此內容郵寄)
echo "Snap Weekly Cleanup Report:"
echo "---"
echo "$CLEANUP_OUTPUT"
fi
# 腳本結束,如果 $CLEANUP_OUTPUT 為空,則腳本輸出為空,不會寄信。
然後權限改成可執行:
sudo chmod +x /etc/cron.weekly/00-clean-snap.sh
我是放在每周清理,如果想改每月或每季,可以自己調整。
也可以自己手動執行驗證。
像我的UBUNTU狀態,執行前:
:/tmp/bpfdoor-check-cron# sudo du -sh /var/lib/snapd
7.0G /var/lib/snapd
腳本執行後:
:/tmp/bpfdoor-check-cron# sudo du -sh /var/lib/snapd
4.6G /var/lib/snapd
硬碟應被清理了2.4G,在小硬碟的使用比率還蠻有感的。