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