Compare commits
5 Commits
e8247ba2ab
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
6b8f7c297d
|
|||
|
0370ee7308
|
|||
|
fda5997f50
|
|||
|
c748863d30
|
|||
|
f7088631b2
|
136
utils/.local/bin/clean
Executable file
136
utils/.local/bin/clean
Executable file
@@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# Скрипт для очистки системных логов
|
||||||
|
# Требует права root
|
||||||
|
#
|
||||||
|
|
||||||
|
set -eo 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
|
||||||
28
utils/.local/bin/drotate
Executable file
28
utils/.local/bin/drotate
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# X11:
|
||||||
|
# xrandr --listactivemonitors
|
||||||
|
# xrandr --output $OUTPUT --rotate (normal|left|right|...)
|
||||||
|
|
||||||
|
# Wayland KDE: https://www.reddit.com/r/kde/comments/11vrbwc/how_do_i_rotate_the_screen_on_kde_with_wayland/
|
||||||
|
# kscreen-doctor --outputs
|
||||||
|
OUTPUT='HDMI-A-1'
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] [normal|left|right|inverted]
|
||||||
|
|
||||||
|
Rotate a display.
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
normal|left|right|inverted Direction
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ "$1" ] && DIRECTION="$1" || DIRECTION="normal"
|
||||||
|
kscreen-doctor "output.$OUTPUT.rotation.$DIRECTION"
|
||||||
20
utils/.local/bin/qwerty
Executable file
20
utils/.local/bin/qwerty
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
|
||||||
|
en = "qwertyuiop[]asdfghjkl;'zxcvbnm,./QWERTYUIOP{}ASDFGHJKL:\"ZXCVBNM<>?"
|
||||||
|
ru = "йцукенгшщзхъфывапролджэячсмитьбю.ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ,"
|
||||||
|
|
||||||
|
def toggle(text):
|
||||||
|
if any('а' <= c <= 'я' or 'А' <= c <= 'Я' for c in text):
|
||||||
|
trans = str.maketrans(ru, en)
|
||||||
|
else:
|
||||||
|
trans = str.maketrans(en, ru)
|
||||||
|
return text.translate(trans)
|
||||||
|
|
||||||
|
if len(sys.argv) > 1:
|
||||||
|
input_text = " ".join(sys.argv[1:])
|
||||||
|
else:
|
||||||
|
input_text = sys.stdin.read().strip()
|
||||||
|
|
||||||
|
if input_text:
|
||||||
|
print(toggle(input_text))
|
||||||
24
utils/.local/bin/space
Executable file
24
utils/.local/bin/space
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
|
||||||
|
cat <<EOF
|
||||||
|
Usage: $(basename "$0") [-h] PATH [-N]
|
||||||
|
|
||||||
|
Display used space on disk by PATH or show top N most heavy paths inside a PATH
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-h, --help Show this help message
|
||||||
|
|
||||||
|
EOF
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$2" ]; then
|
||||||
|
du -ah "$1" 2>/dev/null \
|
||||||
|
| sort -rh 2>/dev/null \
|
||||||
|
| head -"$2" 2>/dev/null
|
||||||
|
else
|
||||||
|
du -ah --max-depth=1 "$1" 2>/dev/null \
|
||||||
|
| sort -rh 2>/dev/null
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user