new clean util
This commit is contained in:
136
utils/.local/bin/clean
Executable file
136
utils/.local/bin/clean
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Скрипт для очистки системных логов
|
||||||
|
# Требует права root
|
||||||
|
#
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] [1|2|3]
|
||||||
|
|
||||||
|
Clean system logs and data to free some space on system disk.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
1|2|3 Safe, normal or aggressive clean level
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||||
|
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||||
|
log_error() { echo -e "${RED}[ERROR]${NC} $*"; }
|
||||||
|
|
||||||
|
show_size() {
|
||||||
|
local path="$1"
|
||||||
|
sudo du -sh "$path" 2>/dev/null | awk '{print $1}'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Показываем текущее использование
|
||||||
|
log_info "Текущее использование:"
|
||||||
|
df -hx tmpfs
|
||||||
|
echo
|
||||||
|
|
||||||
|
log_info "По директориям:"
|
||||||
|
sudo du -h --max-depth=0 \
|
||||||
|
/var/log/ \
|
||||||
|
/var/cache/apt/ \
|
||||||
|
/var/lib/docker/ \
|
||||||
|
"$HOME"/.local/share/Trash/files/ \
|
||||||
|
"$HOME"/.cache/thumbnails/ \
|
||||||
|
2>/dev/null \
|
||||||
|
| sort -rh
|
||||||
|
echo
|
||||||
|
|
||||||
|
choice="${1:-}"
|
||||||
|
if [ -z "$choice" ]; then
|
||||||
|
echo "Выберите режим очистки:"
|
||||||
|
echo " 1) Безопасный"
|
||||||
|
echo " 2) Средний"
|
||||||
|
echo " 3) Агрессивный"
|
||||||
|
echo
|
||||||
|
read -rp "Выбор [1-3]: " choice
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$choice" in
|
||||||
|
1)
|
||||||
|
log_info "Выбран безопасный (1) режим..."
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-size=100M
|
||||||
|
sudo find /var/log -name "*.gz" -mtime +7 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -mtime +7 -delete 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.local/share/Trash/files/ ] && sudo rm -rfv "$HOME"/.local/share/Trash/files//*
|
||||||
|
[ -d "$HOME"/.cache/thumbnails/ ] && sudo rm -rfv "$HOME"/.cache/thumbnails//*
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
log_info "Выбран средний (2) режим..."
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-size=50M
|
||||||
|
sudo find /var/log -name "*.gz" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "dpkg.log.*" -mtime +3 -delete 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.local/share/Trash/files/ ] && sudo rm -rfv "$HOME"/.local/share/Trash/files//* 2>/dev/null || true
|
||||||
|
[ -d "$HOME"/.cache/thumbnails/ ] && sudo rm -rfv "$HOME"/.cache/thumbnails//* 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/cache/apt/archives/*.deb 2>/dev/null || true
|
||||||
|
sudo apt clean 2>/dev/null || true
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
log_info "Выбран агрессивный (3) режим!"
|
||||||
|
read -rp "Продолжить? (y|yes|n|no): " confirm
|
||||||
|
if [[ "$confirm" != "yes" ]] && [[ "$confirm" != "y" ]]; then
|
||||||
|
log_info "Отменено"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -x
|
||||||
|
sudo journalctl --vacuum-time=1d
|
||||||
|
sudo find /var/log -name "*.gz" -delete 2>/dev/null || true
|
||||||
|
sudo find /var/log -name "*.log.*" -delete 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/log/journal/user-*@* 2>/dev/null || true
|
||||||
|
sudo rm -rfv /var/log/journal/system*@* 2>/dev/null || true
|
||||||
|
sudo rm -fv /var/log/{syslog,dmesg,btmp}.* 2>/dev/null || true
|
||||||
|
sudo apt autoremove --purge
|
||||||
|
sudo apt autoclean
|
||||||
|
sudo apt clean
|
||||||
|
sudo rm -rfv /var/cache/apt/archives/* 2>/dev/null || true
|
||||||
|
hash docker && docker system prune -f
|
||||||
|
snap list 2>/dev/null && snap refresh --list 2>/dev/null || true
|
||||||
|
sudo snap list --all \
|
||||||
|
| awk '/disabled/{print $1, $3}' \
|
||||||
|
| while read snapname revision; do
|
||||||
|
sudo snap remove "$snapname" --revision="$revision"
|
||||||
|
done
|
||||||
|
set +x
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log_error "Неверный выбор"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo
|
||||||
|
log_info "Очистка завершена!"
|
||||||
|
log_info "Текущее использование:"
|
||||||
|
df -hx tmpfs
|
||||||
|
echo
|
||||||
|
|
||||||
|
log_info "По директориям:"
|
||||||
|
sudo du -h --max-depth=0 \
|
||||||
|
/var/log/ \
|
||||||
|
/var/cache/apt/ \
|
||||||
|
/var/lib/docker/ \
|
||||||
|
"$HOME"/.local/share/Trash/files/ \
|
||||||
|
"$HOME"/.cache/thumbnails/ \
|
||||||
|
2>/dev/null \
|
||||||
|
| sort -rh
|
||||||
Reference in New Issue
Block a user