DEV Community

Андрей Викулов (VProger)
Андрей Викулов (VProger)

Posted on • Originally published at viku-lov.ru on

Linux-команды для работы с файлами и поиском: Ubuntu, CentOS и практические примеры для Bitrix, Laravel и WordPress

Linux-команды для работы с файлами и поиска

Ubuntu и CentOS — разбор с практическими примерами

Есть два подхода к работе на сервере:

  1. Понимать, где что лежит, и находить это командами.
  2. Открывать файловый менеджер, долго смотреть и в итоге ничего не найти.

Эта статья — про первый подход.

Здесь собраны базовые и продвинутые команды Linux для работы с файлами и поиска:

на Ubuntu и CentOS, в окружениях BitrixVM, Laravel и WordPress.

Без абстрактной теории — только то, что действительно используется в ежедневной серверной практике.


Типовая структура проектов на сервере

Bitrix / BitrixVM

  • корень сайта:

/home/bitrix/ext_www/DOMAIN/public_html/

  • логи nginx:

/var/log/nginx/

  • логи Apache:

/var/log/httpd/ (CentOS) или /var/log/apache2/ (Ubuntu)

  • cron-задачи:

/etc/crontab, /etc/cron.d/, crontab -e

Laravel

  • корень проекта:

/var/www/project или /home/user/project

  • логи приложения:

storage/logs/laravel.log

  • конфигурация:

.env, каталог config/

WordPress

  • корень сайта:

/var/www/site или /home/.../public_html

  • конфигурация:

wp-config.php

  • плагины и загрузки:

wp-content/


Просмотр файлов и структуры каталога

Список файлов и размеры


ls -lah

ls -lahS

Enter fullscreen mode Exit fullscreen mode

Подробная информация о файле


stat wp-config.php

Enter fullscreen mode Exit fullscreen mode

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

  • дату изменения;
  • владельца и группу;
  • реальные права доступа.

Быстрый просмотр структуры


tree -L 2

Enter fullscreen mode Exit fullscreen mode

Поиск файлов: команда find

Поиск по имени


find . -type f -name "wp-config.php"

find /home/bitrix/ext\_www -type f -name ".env"

Enter fullscreen mode Exit fullscreen mode

Поиск без учёта регистра


find . -type f -iname "\*.log"

Enter fullscreen mode Exit fullscreen mode

Поиск недавно изменённых файлов


find . -type f -mtime -2

Enter fullscreen mode Exit fullscreen mode

Пример из практики:

После взлома сайта нужно понять, какие PHP-файлы появились или изменились за последние сутки.


cd /home/bitrix/ext\_www/DOMAIN/public\_html

find . -type f -name "\*.php" -mtime -1

Enter fullscreen mode Exit fullscreen mode

Поиск подозрительных файлов в upload-каталогах

Bitrix и WordPress часто становятся жертвами загрузки PHP-файлов в каталоги для медиа.


find upload -type f -name "\*.php"

find wp-content/uploads -type f -name "\*.php"

Enter fullscreen mode Exit fullscreen mode

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


find . -type f -size +200M

Enter fullscreen mode Exit fullscreen mode

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


Поиск текста внутри файлов

grep — классический инструмент


grep -RIn "eval(" .

grep -RIn "base64\_decode" .

Enter fullscreen mode Exit fullscreen mode

Флаги:

  • -R — рекурсивно;
  • -I — игнорировать бинарные файлы;
  • -n — показывать номера строк.

Пример из практики WordPress:

Сайт начал делать редиректы на сторонние ресурсы.


grep -RIn "gzinflate" wp-content

grep -RIn "base64\_decode" wp-content

Enter fullscreen mode Exit fullscreen mode

ripgrep (rg) — современная альтернатива

Если доступен, использовать его предпочтительнее: быстрее и удобнее.


rg -n "APP\_KEY"

rg -n "DB\_HOST"

Enter fullscreen mode Exit fullscreen mode

Пример из практики Laravel:

Нужно найти, где используется конкретная переменная окружения.


rg -n "PAYMENT\_PROVIDER" .

Enter fullscreen mode Exit fullscreen mode

Комбинация find и xargs

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


find . -type f -name "\*.php" -print0 | xargs -0 grep -n "eval("

Enter fullscreen mode Exit fullscreen mode

Использование -print0 и -0 защищает от проблем с пробелами в именах файлов.


Быстрый поиск по системе: locate


locate php.ini

locate wp-config.php

Enter fullscreen mode Exit fullscreen mode

Важно помнить, что locate ищет по базе, которая может быть неактуальной.

Обновление базы:


updatedb

Enter fullscreen mode Exit fullscreen mode

Работа с логами

Просмотр последних записей


tail -n 200 /var/log/nginx/error.log

tail -f /var/log/nginx/access.log

Enter fullscreen mode Exit fullscreen mode

Чтение с поиском


less /var/log/nginx/error.log

Enter fullscreen mode Exit fullscreen mode

systemd-журналы


journalctl -u nginx -n 200 --no-pager

journalctl -u php-fpm -n 200 --no-pager

journalctl -xe

Enter fullscreen mode Exit fullscreen mode

Проверка дискового пространства


df -h

du -sh \*

Enter fullscreen mode Exit fullscreen mode

Поиск самых “тяжёлых” файлов:


du -ah . | sort -hr | head -n 30

Enter fullscreen mode Exit fullscreen mode

Архивирование: tar


tar -czf site.tar.gz public\_html

Enter fullscreen mode Exit fullscreen mode

Исключение кешей и временных файлов:


tar -czf site.tar.gz public\_html \

--exclude="public\_html/bitrix/cache" \

--exclude="public\_html/bitrix/managed\_cache" \

--exclude="public\_html/upload/tmp"

Enter fullscreen mode Exit fullscreen mode

Синхронизация и переносы: rsync

Пробный запуск:


rsync -avhn --delete ./ public\_html/

Enter fullscreen mode Exit fullscreen mode

Реальный перенос:


rsync -avh --delete ./ user@server:/var/www/site/

Enter fullscreen mode Exit fullscreen mode

Права и владельцы

Проверка:


ls -lah

stat index.php

Enter fullscreen mode Exit fullscreen mode

Исправление владельца (BitrixVM):


chown -R bitrix:bitrix /home/bitrix/ext\_www/DOMAIN/public\_html

Enter fullscreen mode Exit fullscreen mode

Рекомендуемые права:


find . -type d -exec chmod 755 {} \;

find . -type f -exec chmod 644 {} \;

Enter fullscreen mode Exit fullscreen mode

Итог

Команды Linux — это не “магия для администраторов”, а рабочий инструмент разработчика.

Если уметь:

  • искать файлы (find);
  • искать текст (grep, rg);
  • читать логи;
  • контролировать дисковое пространство;
  • аккуратно работать с правами;

то сервер перестаёт быть источником хаоса и превращается в предсказуемую систему.

Read more on viku-lov.ru

Top comments (0)