March 10

15 однострочных bash-скриптов для упрощения рутинных задач

Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.

1. Проверка использования дискового пространства

Нехватка места на диске может привести к сбою приложений. Эта команда выводит список всех смонтированных разделов и выделяет те, которые утилизированы на 80% и более.

df -h | awk '$5+0 > 80 {print}'

- df -hотображает использование диска в удобном для чтения формате.
- awk ‘$5+0 > 80 {print}’извлекает строки, в которых утилизация превышает 80%.

2. Поиск больших файлов, которые занимают место

Определите 10 самых больших файлов в системе.

find / -type f -exec du -h {} + | sort -rh | head -10

- find / -type fищет все файлы.
- du -hвычисляет размеры файлов в удобном для чтения формате.
- sort -rhсортирует результаты по убыванию.
- head -10ограничивает вывод 10 самыми большими файлами.

3. Отслеживание обновлений лога в реальном времени

Просмотр файлов логов в режиме реального времени, с фильтрацией сообщений об ошибках.

tail -f /var/log/syslog | grep - line-buffered "error"

- tail -fотслеживает файл журнала по мере добавления новых записей.
- grep — line-buffered “error”фильтрует строки, содержащие "error".

4. Перезапуск службы в случае сбоя

Проверка, что критически важная служба, такая как Nginx, всегда запущена.

systemctl is-active - quiet nginx || systemctl restart nginx

- systemctl is-active — quiet nginxпроверяет состояние службы.
- Если она не запущена, systemctl restart nginxперезапускает ее.

5. Мониторинг использования CPU в режиме реального времени

Проверка загрузки CPU в реальном времени для устранения неполадок с производительностью.

top -b -n 1 | grep "Cpu(s)"

- top -b -n 1запускает «top» в пакетном режиме для одной итерации.
- grep “Cpu(s)”извлекает сведения об использовании CPU.

6. Уничтожение самого ресурсоемкого процесса

Поиск и завершение процесса, потребляющего больше всего ресурсов CPU.

kill -9 $(ps -eo pid,%cpu - sort=-%cpu | awk 'NR==2 {print $1}')

- ps -eo pid,%cpu — sort=-%cpuвыводит список процессов, отсортированных по использованию CPU.
- awk ‘NR==2 {print $1}’выбирает процесс с наибольшим потреблением ЦП.
- kill -9принудительно завершает его.

7. Получение публичного IP-адреса

Быстрое получение публичного IP-адреса сервера.

curl -s ifconfig.me

- Способ использует curl для запроса текущего публичного IP-адреса из «ifconfig.me».
- -sПодавляет ненужный вывод.

8. Поиск всех открытых сетевых портов

Перечисление всех активных прослушиваемых портов на вашем компьютере.

netstat -tulnp | grep LISTEN

- netstat -tulnpотображает открытые порты и связанные с ними процессы.
- grep LISTENфильтрует результаты по прослушиваемым портам.

9. Копирование SSH-ключа на удаленный сервер

Настройка беспарольной SSH-аутентификации за секунды.

ssh-keygen -t rsa -b 2048 -q -N "" && ssh-copy-id user@remote_server

- ssh-keygenсоздает пару ключей RSA.
- ssh-copy-idпередает открытый ключ на удаленный сервер.

10. Синхронизация файлов между серверами

Использование rsync для зеркалирования файлов с одного сервера на другой.

rsync -avz /local/path user@remote:/remote/path

- -aсохраняет разрешения и временные метки.
- -vвключает подробный режим.
- -zсжимает данные для более быстрой передачи.

11. Планирование задач с помощью Cron

Добавление задания cron для резервного копирования файлов каждую ночь в 2 часа ночи.

echo  "0 2 * * * tar -czf /backup.tar.gz /important/data" | crontab -

- 0 2 * * *планирует задание на 2 часа ночи ежедневно.
- tar -czfсжимает и создает резервную копию "/important/data".

12. Загрузка файла в фоновом режиме

Использование «wget» для загрузки больших файлов без блокировки терминала.

nohup wget -q https://example.com/bigfile.zip &

- nohupобеспечивает выполнение процесса даже после выхода из системы.
- wget -qнезаметно загружает файл.
- &запускает процесс в фоновом режиме.

13. Поиск и удаление старых файлов логов

Автоматическая очистка логов старше 7 дней.

find /var/log -name "*.log" -mtime +7 -exec rm -f {} \;

- -mtime +7выбирает файлы старше 7 дней.
- -exec rm -f {}удаляет их.

14. Проверка открыт ли порт на удаленном сервере

Проверка открыт ли определенный порт (например, 443) на удаленном хосте.

nc -zv example.com 443

- nc -zvпроверяет соединение без отправки данных.
- Полезно для устранения неполадок брандмауэра и подключения.

15. Список всех запущенных Docker-контейнеров

Удобный просмотр активных контейнеров Docker.

docker ps - format "table {{.ID}} \t {{.Image}} \t {{.Status}}"

- docker psвыводит список запущенных контейнеров.
- — formatструктурирует вывод для лучшей читабельности.

На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.