Какие основные команды Linux должен знать бэкенд-разработчик и для чего они используются?

Ответ

Бэкенд-разработчику необходим уверенный набор команд для работы на сервере, анализа логов и управления приложениями. Вот основные группы и команды:

1. Навигация и работа с файлами:

  • ls -la: Показать список файлов и директорий с детальной информацией (права, владелец, размер).
  • cd <path>: Переместиться в другую директорию.
  • pwd: Показать текущую рабочую директорию.
  • cp <source> <dest>: Скопировать файл или директорию (-r для рекурсивного копирования).
  • mv <source> <dest>: Переместить или переименовать файл/директорию.
  • rm <file>: Удалить файл (-r для директорий, -f для принудительного удаления).
  • mkdir <name>: Создать новую директорию.

2. Просмотр и поиск в файлах (критично для логов):

  • cat <file>: Вывести содержимое файла в консоль.
  • less <file>: Постраничный просмотр больших файлов с возможностью поиска.
  • tail -f <file>: Следить за файлом в реальном времени (например, tail -f /var/log/app.log).
  • grep "pattern" <file>: Поиск строк, содержащих pattern, в файле. Часто используется в связке с другими командами: cat app.log | grep "ERROR".

3. Управление процессами:

  • ps aux: Показать все запущенные процессы.
  • top / htop: Мониторинг использования CPU/памяти процессами в реальном времени (htop более наглядный).
  • kill <PID>: Отправить сигнал процессу (по умолчанию TERM).
  • kill -9 <PID>: Принудительно завершить процесс.

4. Работа с сетью:

  • curl <url>: Сделать HTTP-запрос к URL, полезно для проверки доступности API.
  • netstat -tulnp или ss -tulnp: Показать, какие порты слушают запущенные процессы.

5. Системная информация и диски:

  • df -h: Показать использование дискового пространства в читаемом формате.
  • du -sh <dir>: Показать размер указанной директории.
  • free -h: Показать информацию об использовании оперативной памяти.

6. Права доступа:

  • chmod 755 <file>: Изменить права доступа к файлу (например, сделать скрипт исполняемым).
  • chown <user>:<group> <file>: Изменить владельца и группу файла.

Пример полезной связки:

# Найти все Go-файлы в текущей директории и её поддиректориях, 
# а затем посчитать общее количество строк в них.
find . -name "*.go" | xargs wc -l