Полезняшка дня: команды и скрипты, которые экономят время
Короткие команды и однострочники, которые использую каждый день. Без воды - только то, что реально работает. Найти большие файлы # Топ-10 больших файлов find / -type f -exec du -h {} + 2>/dev/null | sort -rh | head -10 # Или через ncdu (нужно установить) ncdu / Быстрый бэкап перед правками # Бэкап с датой в имени cp nginx.conf{,.bak.$(date +%Y%m%d_%H%M%S)} # Результат: nginx.conf.bak.20240724_143022 Мониторинг в реальном времени # Следить за логом и подсвечивать ERROR tail -f /var/log/app.log | grep --color=auto -E "ERROR|$" # Обновляющийся вывод команды watch -n 1 'docker ps' watch -d 'kubectl get pods' # -d подсветит изменения Массовое переименование # Убрать пробелы из имён файлов for f in *\ *; do mv "$f" "${f// /_}"; done # Изменить расширение for f in *.txt; do mv "$f" "${f%.txt}.md"; done Работа с процессами # Найти процесс по части имени pgrep -f "part_of_name" # Убить все процессы пользователя pkill -u username # Дерево процессов ps auxf # или красивее pstree -p Сетевая магия # Кто слушает порт ss -tlnp | grep :80 lsof -i :80 # Проверить доступность порта nc -zv hostname 443 timeout 2 bash -c "</dev/tcp/google.com/443" && echo "Port open" # Простой веб-сервер для тестов python3 -m http.server 8080 Git лайфхаки # Отменить последний коммит (оставить изменения) git reset --soft HEAD~1 # Исправить сообщение последнего коммита git commit --amend # Показать изменения в последнем коммите git show --stat # Удалить все локальные ветки кроме main git branch | grep -v "main" | xargs git branch -D Docker однострочники # Удалить все остановленные контейнеры docker container prune -f # Логи с таймстампами docker logs -t --since 30m container_name # Выполнить команду во всех контейнерах docker ps -q | xargs -I {} docker exec {} df -h # Размер образов и контейнеров docker system df Быстрый анализ логов # Топ IP адресов в access.log awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20 # Количество 4xx и 5xx ошибок awk '$9 ~ /^[45]/ {print $9}' access.log | sort | uniq -c # Запросы медленнее 1 секунды (nginx) awk '$NF > 1' access.log | wc -l Полезные алиасы # Добавить в ~/.bashrc alias ll='ls -alh' alias ..='cd ..' alias ...='cd ../..' alias ports='netstat -tulanp' alias myip='curl -s ifconfig.me' alias serve='python3 -m http.server' # Docker алиасы alias dps='docker ps' alias dpsa='docker ps -a' alias dex='docker exec -it' alias dlog='docker logs -f' # K8s алиасы alias k='kubectl' alias kgp='kubectl get pods' alias kgs='kubectl get svc' alias kdp='kubectl describe pod' Проверка ресурсов # CPU и память топ процессов ps aux --sort=-%cpu | head -10 ps aux --sort=-%mem | head -10 # Использование диска по директориям du -h --max-depth=1 / 2>/dev/null | sort -hr # iostat для дисков iostat -x 1 Работа с текстом # Удалить пустые строки sed '/^$/d' file.txt # Заменить во всех файлах find . -type f -name "*.conf" -exec sed -i 's/old/new/g' {} + # Посчитать строки кода (без пустых) find . -name "*.py" -exec cat {} + | sed '/^$/d' | wc -l Безопасность # Генерация паролей openssl rand -base64 32 # или tr -dc 'A-Za-z0-9!@#$%' < /dev/urandom | head -c 20 # Проверить SSL сертификат echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -dates Дебаг и тестирование # HTTP запрос с заголовками curl -I https://example.com curl -H "Host: example.com" http://localhost # DNS lookup dig +short example.com # Все записи dig example.com ANY # Трассировка системных вызовов strace -e open,read,write -p PID Бонус: полезные функции для .bashrc # Распаковать любой архив extract() { if [ -f $1 ]; then case $1 in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.tar.xz) tar xJf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1;; *.7z) 7z x $1 ;; *) echo "'$1' cannot be extracted" ;; esac else echo "'$1' is not a valid file" fi } # Создать директорию и перейти в неё mkcd() { mkdir -p "$1" && cd "$1" } Сохраните эти команды - они точно пригодятся! ...