Заметки

SSH: простые команды для повседневных нужд

M
Markabus
·14 января 2019 г.
Фотореалистичный кадр у стола: экран ноутбука с терминальной сессией — белые и зелёные строки команд на почти чёрном фоне, на дальнем плане в расфокусе серверная стойка с зелёными и янтарными индикаторами, рядом механическая клавиатура и кружка — иллюстрация к шпаргалке по SSH-командам

Когда сайт живёт на своём сервере, часть задач быстрее решить в терминале, чем через панель управления: найти строку в сотне файлов темы, понять, куда делись 40 гигабайт, снять дамп базы перед обновлением. Ниже — команды, которые я использую чаще всего.

Небольшое уточнение по названию: сам SSH отвечает только за защищённое подключение к серверу. Всё, что ниже, — обычные команды Linux, которые вы выполняете уже внутри этого подключения. Подключиться можно так:

ssh user@example.com

# если SSH висит на нестандартном порту
ssh -p 2222 user@example.com

Поиск по содержимому файлов

Самая частая задача: найти, где именно в коде встречается нужная строка. Ключ -r заставляет grep обойти папку рекурсивно, вместе со всеми вложенными.

grep -r "ID транзакции" /home/web/site.ru/public_html/wp-content/themes/themename

Полезные дополнения к этой же команде: -n покажет номера строк, -i сделает поиск нечувствительным к регистру, а -l выведет только имена файлов без самих строк — удобно, когда совпадений много.

Сколько свободного места на диске

df -h

Ключ -h означает human-readable — размеры выводятся в гигабайтах и мегабайтах, а не в блоках. Пример ответа:

Filesystem      Size  Used  Avail  Use%  Mounted on
/dev/vda1        79G   45G    31G   60%  /
devtmpfs        2.9G     0   2.9G    0%  /dev

Смотреть нужно на строку с реальным диском (здесь /dev/vda1) и на колонку Use%. Если она подбирается к 90%, пора разбираться, что занимает место.

Что именно занимает место

Размеры папок в текущей директории:

du -sh *

То же, но отсортировано от большего к меньшему — в мегабайтах:

du -sm * | sort -nr

И в килобайтах:

du -s * | sort -nr

Если сортировка нужна вместе с удобными единицами, современный sort умеет понимать суффиксы K, M и G:

du -sh * | sort -h

Обычный сценарий поиска «пожирателя места»: запускаете команду в корне сайта, находите самую тяжёлую папку, переходите в неё и повторяете. За три-четыре шага виновник находится — чаще всего это логи, кеш или старые бэкапы.

Архивы

Собрать zip-архив с папкой сайта:

zip -r sitename.zip sitename.ru/

Распаковать tar.gz:

tar -xvf ArchiveName.tar.gz

Обратная операция — упаковать папку в tar.gz, что на больших объёмах заметно экономнее zip:

tar -czvf ArchiveName.tar.gz sitename.ru/

Буквы читаются просто: c — create, x — extract, z — сжатие gzip, v — показывать файлы в процессе, f — имя файла архива.

Права на файлы и папки

Сменить владельца папки вместе со всем содержимым:

chown -R apache:apache folder

Обратите внимание на имя пользователя: apache — это CentOS, AlmaLinux и родственные системы. В Debian и Ubuntu веб-сервер работает от www-data, и команда будет такой:

chown -R www-data:www-data folder

Проверить, от кого работает веб-сервер, можно командой ps aux | grep -E "apache|nginx|php-fpm" — в первой колонке будет имя пользователя.

Резервная копия базы MySQL

mysqldump -u DB_USER_NAME -p'DB_USER_PASS' DB_NAME > /var/www/domains/SITENAME/DB_NAME.sql

Где DB_NAME — название базы, DB_USER_NAME — имя пользователя, DB_USER_PASS — пароль, SITENAME — адрес сайта.

Важная оговорка про пароль. В таком виде команда работает, но пароль попадает в историю оболочки (~/.bash_history) и виден любому пользователю сервера в списке процессов через ps aux. На своём сервере, где вы один, это терпимо, на общем — уже нет. Безопаснее не указывать пароль в строке вовсе — тогда mysqldump спросит его интерактивно:

mysqldump -u DB_USER_NAME -p DB_NAME > dump.sql

А для автоматических выгрузок по расписанию пароль кладут в отдельный файл ~/.my.cnf с правами 600:

[mysqldump]
user=DB_USER_NAME
password=DB_USER_PASS

После этого команда сокращается до mysqldump DB_NAME > dump.sql, и пароль нигде не светится.

Блокировка назойливого IP

Закрыть доступ к серверу с конкретного адреса:

sudo iptables -A INPUT -s XXX.XXX.XXX.XXX -j DROP

Посмотреть все действующие правила с номерами строк:

sudo iptables -n -L -v --line-numbers

Номера строк нужны, чтобы правило можно было потом снять: sudo iptables -D INPUT 3 удалит третье правило в цепочке INPUT.

Учтите главное: правила iptables живут до перезагрузки. Если сервер перезапустится, блокировка исчезнет. Чтобы правила сохранялись, их выгружают через iptables-save или ставят пакет netfilter-persistent.

Опасные команды: читать внимательно

Очистить директорию целиком:

rm -rf *

Эта команда удаляет всё содержимое текущей папки без вопросов и без корзины. Восстановить будет нечем — только из бэкапа. Две меры предосторожности, которые стоят потраченных секунд.

Первое: перед удалением всегда проверяйте, где вы находитесь, командой pwd, и что именно собираетесь удалить — командой ls -la. Классическая авария случается, когда человек думает, что он в папке кеша, а на самом деле в корне сайта.

Второе: работайте с полным путём, а не с текущей папкой — rm -rf /var/www/site.ru/cache/* нагляднее и безопаснее, чем rm -rf *. И никогда не запускайте такие команды из-под root, если этого можно избежать.

Шпаргалка одним списком

ssh user@hostподключиться к серверу
grep -r "текст" /путьнайти строку в файлах
df -hсвободное место на дисках
du -sh * | sort -hразмеры папок по убыванию
tar -czvf a.tar.gz папка/упаковать архив
tar -xvf a.tar.gzраспаковать архив
chown -R www-data:www-data папкасменить владельца
mysqldump -u USER -p БАЗА > dump.sqlдамп базы
sudo iptables -A INPUT -s IP -j DROPзаблокировать адрес

Список не претендует на полноту — это те команды, которые действительно нужны в повседневной работе с сайтом на своём сервере. Если держать их под рукой, большинство мелких задач решается быстрее, чем открывается панель управления.

Частые вопросы

Q.Как подключиться к серверу по SSH?

Командой ssh user@example.com, где user — имя пользователя на сервере. Если SSH работает не на стандартном 22-м порту, нужно указать его явно: ssh -p 2222 user@example.com.

Q.Почему не стоит писать пароль прямо в команде mysqldump?

В таком виде пароль попадает в историю оболочки и виден другим пользователям сервера в списке процессов (ps aux). На своём сервере это терпимо, на общем — нет. Лучше указать ключ -p без значения — пароль спросят интерактивно, — а для автоматических выгрузок завести файл ~/.my.cnf с правами 600.

Q.Почему блокировка IP слетела после перезагрузки?

Правила iptables хранятся в памяти и при перезагрузке сбрасываются. Чтобы они сохранялись, их выгружают через iptables-save или устанавливают пакет netfilter-persistent.

Q.Можно ли отменить rm -rf?

Нет. Команда удаляет файлы без корзины и без подтверждения, восстановить данные можно только из резервной копии. Поэтому перед запуском проверяйте текущую папку через pwd и ls -la, а лучше указывайте полный путь вместо звёздочки.

Источники

Теги:#SSH1
Следующая
Как создать связанное поле с другим модулем в Vtiger CRM?

Читайте также

Вид сверху на рабочий стол: ряд бумажных карточек с короткими парами «вход — выход», рядом ручка, механическая клавиатура и край экрана с кодомЗаметки
1 сентября 2026 г.

Few-shot и примеры в промпте: как получить нужный ответ

Иногда нужный результат проще показать, чем описать. Разбираем few-shot: сколько примеров давать, как их размечать, почему важны порядок и баланс классов, где приём не нужен и во сколько токенов обходится.

Читать →
Рабочий стол ретушёра в полутёмной студии: крупный монитор с фотореалистичным снимком и панелями цветокоррекции, рядом фотоаппарат со светосильным объективом, калибровочная карта и тестовые отпечаткиЗаметки
31 августа 2026 г.

Промпт для генерации изображения: как добиться фотореализма

Модель выдаёт восковую кожу и пластиковый глянец не потому, что она слабая, а потому что промпт слишком короткий. Разбираем формулу из шести слотов — герой, план, объектив, свет, среда, материалы, — готовый шаблон с примером и обзор моделей: Gemini Nano Banana, GPT-Image-2, Midjourney V8.2 и FLUX.2.

Читать →
Рабочий стол разработчика в тёмной комнате: на экране ноутбука терминал с красной ошибкой неудавшегося запроса, рядом второй монитор с кодом, роутер с индикаторами и моток сетевого кабеляЗаметки
28 августа 2026 г.

Не работает Gemini в России: почему и что делать

Gemini API отвечает 400 FAILED_PRECONDITION, а AI Studio не даёт выпустить ключ. Разбираем, как Google определяет регион, почему VPN на компьютере не спасает боевой сервер и как за вечер поднять свой обратный прокси на nginx — с проверкой IP, конфигом и типичными граблями.

Читать →