Какие основные команды Linux вы используете в работе с Node.js-проектами?

«Какие основные команды Linux вы используете в работе с Node.js-проектами?» — вопрос из категории DevOps, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В повседневной работе с Node.js на Linux я активно использую следующие команды для навигации, управления процессами, поиска и анализа логов:

Навигация и управление файлами:

  • pwd — показать текущую рабочую директорию.
  • ls -la — детальный список файлов и папок (включая скрытые).
  • cd <path> — перейти в указанную директорию.
  • mkdir <dirname> — создать папку.
  • rm -rf <dirname> — рекурсивно удалить папку и всё её содержимое (используется с осторожностью).
  • cp -r <source> <dest> — рекурсивно скопировать директорию.
  • mv <source> <dest> — переместить или переименовать.

Просмотр и поиск:

  • cat <file> или less <file> — просмотреть содержимое файла.
  • tail -f <logfile> — следить за логами в реальном времени (очень полезно для pm2 logs или логов приложения).
  • grep -r "error" . — рекурсивно найти строку "error" во всех файлах текущей директории.
  • find . -name "*.js" -type f — найти все JavaScript-файлы.

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

  • ps aux | grep node — найти все запущенные Node.js-процессы.
  • kill -9 <PID> — принудительно завершить процесс по его ID (последнее средство).
  • lsof -i :3000 — узнать, какой процесс использует порт 3000.
  • netstat -tulpn — показать список открытых портов и связанных процессов.

Системный мониторинг и права:

  • df -h — проверить свободное место на дисках.
  • top или htop — мониторинг ресурсов (CPU, память) в реальном времени.
  • chmod +x <script> — сделать файл исполняемым.
  • npm run <script> — запуск npm-скриптов из package.json.

Работа с сетью и SSH:

  • ssh user@server — подключиться к удалённому серверу для деплоя.
  • scp <file> user@server:/path — скопировать файл на сервер.
  • curl http://localhost:3000/health — проверить доступность эндпоинта API.

Пример типичной операции — поиск ошибки в логах приложения:

# Перейти в директорию с логами и отслеживать последние ошибки
cd /var/log/my-node-app
grep -i "error" app.log | tail -20