Ускоряем передачу файлов с сервера на сервер через rsync

Rsync — замечательная утилита для синхронизации файлов между файлами. Она отлично подходит для создания бекапов, резервных копий и просто для переброса произвольных файлов с сервера на сервер. Rsync не единственный в своём роде, у него множество альтернатив: FTP, SSH, FISH, SCP и другие. Однако, эр-синк превосходит их по скорости и возможностям. Читать далее Ускоряем передачу файлов с сервера на сервер через rsync

Установить Composer как системную команду в Linux

Сейчас мало проектов на PHP обходятся без пакетного менеджера Composer. Однако, он не является предустановленным пакетом в операционных системах даже при наличии установленного php.

При попытке запуска composer install может возникнуть ошибка:

-bash: composer: command not found

Исправить это можно одной строчкой:

curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/bin/composer

Эта последовательность команд установит композер и переместит его в директорию системных команд.

Запуск команд от имени системных пользователей

Когда требуется запустить команду или просто проверить права доступа от имени другого пользователя, можно воспользоваться примерно такой командой:

su -c whoami nobody

Для обычных пользователей это вернёт ожидаемый результат. Но, для системных пользователей, вроде nobody, apache и .т.д., результат будет таким:

This account is currently not available.

Читать далее Запуск команд от имени системных пользователей

Чистка логов docker-контейнеров

Весь stdout контейнеров докер бережливо сохраняет в файлики. По-дефолту эти логи никак не ротируются и копятся до тех пор, пока не закончится место на диске. Если неизбежное произошло, можно элегантно освободить место на диске следующей командой:

truncate -s 0 /var/lib/docker/containers/*/*-json.log

Как редактировать crontab через nano

Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для крона по-умолчанию в CentOS.

crontab -e

Команда выше открывает крон-файл текущего пользователя для редактирования в редакторе по-умолчанию. Однако, его можно изменить разово перед каждым открытие крона на редактирование.

EDITOR=nano crontab -e

Конечно, писать лишних 13 символов быстро надоест, поэтому можно переопределить значение этой константы в текущей сессии пользователя:

export EDITOR=nano

Когда надоест и это, остаются только крайние меры: определение этой константы в конце файла /etc/bashrc.

Вачдог по-быстрому

Бывают ситуации, когда что-то идёт не так и нужно по-быстрому запилить килялку чего либо и как можно скорее вернуться к выполнению основной задачи. Типичная ситуация: плодятся процессы, которые никто не прибивает, что приводит к утечке ресурсов и тормозам на всём сервере. Самым быстрым способом будет мониторинг количества процессов и рестарту ноды/приложения при достижении критического значения.

while true; do pscnt=$(ps aux | grep [your app] | wc -l); echo "$pscnt"; if (( pscnt > 500 )); then [your app restart]; fi; sleep 2; done

Запуск такого скрипта из консоли будет не лучшей идеей, гораздо надёжнее положить его в крон примерно таким образом:

* * * * * pscnt=$(ps aux | grep [your app] | wc -l); echo "$pscnt"; if (( pscnt > 500 )); then [your app restart]; fi; >> /var/log/watcher.log

Ну и конечно при первой возможности разобраться с причинами этой ситуации.

Как использовать команду watch с пайпами

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

watch [your commands]

Но если в исходной команде присутствует конвейер (pipe), то его использование в лоб не приведёт к желаемому результату, например:

watch ps aux | wc -l

На выводе вы ничего не получите. Для корректной работы такую последовательность команд нужно заключить в одинарные кавычки:

watch 'ps aux | wc -l'

Возможно, не самое красивое решение, но работает.

Если вы не ищите лёгких путей, то есть такой вариант:

while true; do ps aux | wc -l; sleep 2; done