Как давно работаешь на Linux?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Опыт работы с Linux: практическое значение для Node.js Backend разработчика
Этот вопрос ориентирован на выявление практического опыта работы с операционной системой Linux, на которой работает большинство production backend-систем.
Почему Linux критичен для backend-разработчика
Linux в production
- 96% серверов в облаке работают на Linux
- AWS, Google Cloud, Azure — все используют Linux в основном
- Docker контейнеры основаны на Linux
- Node.js приложения деплоятся на Linux серверы
Ключевые навыки работы с Linux
1. Базовые команды и навигация
# Навигация по файловой системе
ls -la # Список файлов с деталями
cd /path/to/directory # Переход в директорию
pwd # Текущая директория
mkdir -p /path/to/nested # Создать директории
rm -rf /path/to/remove # Удалить файлы/директории
cp -r source destination # Копировать
mv source destination # Переместить/переименовать
# Поиск файлов
find . -name "*.log" # Найти файлы
grep -r "search term" . # Поиск в содержимом
which node # Найти команду
2. Управление процессами
# Просмотр процессов
ps aux # Все процессы
top # Интерактивный монитор
htop # Лучший вариант top
jobs # Фоновые задачи
# Управление процессами
kill -9 <PID> # Завершить процесс
killall node # Завершить все node процессы
# Запуск в фоне
./script.sh & # Запустить в фоне
nohup ./script.sh & # Запустить, отуменить от terminal
3. Работа с сетью
# Проверка соединения
ping example.com # Проверить connectivity
curl -v https://example.com # HTTP запрос с деталями
wget file.tar.gz # Скачать файл
netstat -an # Просмотр портов
lsof -i :3000 # Какой процесс на порту 3000
ssh user@host.com # Подключение по SSH
scp file.txt user@host:~/ # Копировать по сети
4. Управление пакетами
# В зависимости от дистрибутива
# Ubuntu/Debian:
sudo apt update # Обновить список пакетов
sudo apt install node # Установить пакет
sudo apt remove node # Удалить пакет
# CentOS/RedHat:
sudo yum install node # Установить
sudo yum remove node # Удалить
# Версия пакета
apt-cache policy node # Доступные версии
npm --version # Версия npm
node --version # Версия Node.js
5. Работа с файлами и перенаправлением
# Просмотр файлов
cat file.txt # Содержимое файла
less file.txt # Постраничный просмотр
tail -f app.log # Последние строки (follow)
head -n 20 file.txt # Первые 20 строк
# Редактирование
vim file.txt # Vi/Vim редактор
nano file.txt # Nano редактор (проще)
# Перенаправление
echo "text" > file.txt # Перезаписать
echo "text" >> file.txt # Добавить в конец
command 2>&1 | tee output.txt # Вывести и сохранить
cat file1 file2 > combined.txt # Объединить файлы
6. Права доступа (Permissions)
# Просмотр прав
ls -la # Показывает права (-rw-r--r--)
# Изменение прав
chmod 755 script.sh # Сделать исполняемым
chmod 644 file.txt # Читаемым для всех
chmod +x app # Добавить execute право
# Изменение владельца
chown user:group file.txt # Изменить владельца
sudo chown -R user:group ./app # Рекурсивно
Практические сценарии для backend-разработчика
1. Развертывание Node.js приложения
# SSH на production сервер
ssh deploy@production.example.com
# Переход в директорию приложения
cd /var/www/myapp
# Обновление кода
git pull origin main
# Установка зависимостей
npm ci --production # CI для production
# Проверка что Node.js работает
ps aux | grep node # Есть ли node процесс?
# Просмотр логов
tail -f /var/log/app.log # Логи приложения
# Перезапуск приложения
killall node # Остановить
npm start & # Запустить в фоне
# Проверка портов
lsof -i :3000 # Слушаем ли на 3000
curl http://localhost:3000 # Проверить локально
2. Мониторинг и диагностика
# CPU и память
free -h # Свободная память
df -h # Свободное место на диске
top # Real-time мониторинг
# Процессы Node.js
ps aux | grep node # Все node процессы
ps aux | grep npm # npm процессы
# Открытые порты
netstat -tlnp | grep node # Node.js портов
sudo netstat -tlnp # Все слушающие порты
# Логи системы
tail -f /var/log/syslog # Системные логи
dmesg | tail -20 # Kernel сообщения
# Размер процесса
virt_mem=$(ps aux | grep node | head -1 | awk '{print $6}')
echo "Memory usage: $virt_mem KB"
3. Работа с Docker на Linux
# Docker команды на Linux
docker ps # Запущенные контейнеры
docker logs -f container_id # Логи контейнера
docker exec -it container_id bash # Войти в контейнер
docker build -t myapp:latest . # Собрать образ
docker run -p 3000:3000 myapp # Запустить контейнер
# Docker Compose
docker-compose up -d # Запустить в фоне
docker-compose down # Остановить все
docker-compose logs -f web # Логи сервиса
4. Скрипты и автоматизация
#!/bin/bash
# Пример bash скрипта для deploy
set -e # Выйти при ошибке
echo "Deploying Node.js app..."
# Переход в директорию
cd /var/www/myapp
# Обновление кода
git pull origin main || exit 1
# Установка зависимостей
npm ci --production || exit 1
# Запуск миграций
npm run migrate || exit 1
# Перезапуск приложения
killall node || true # || true чтобы не упасть если процесса нет
sleep 2
npm start &
echo "Deploy completed successfully"
5. Systemd для управления сервисами
# Создание systemd сервиса
sudo nano /etc/systemd/system/myapp.service
# Содержимое:
[Unit]
Description=My Node.js App
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/node /var/www/myapp/index.js
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
# Команды
sudo systemctl start myapp # Запустить
sudo systemctl stop myapp # Остановить
sudo systemctl restart myapp # Перезапустить
sudo systemctl enable myapp # Автозапуск
sudo systemctl status myapp # Статус
sudo journalctl -u myapp -f # Логи
Распространенные ошибки Linux
Разрешение доступа (Permission denied)
# Проблема: bash: ./script.sh: Permission denied
# Решение:
chmod +x script.sh
./script.sh
# Или для директорий
chmod -R 755 /var/www/app
chown -R www-data:www-data /var/www/app
Портов заняты
# Проблема: EADDRINUSE: address already in use :::3000
# Найти процесс:
lsof -i :3000
# Убить процесс:
kill -9 <PID>
Нет места на диске
# Диагностика
df -h # Какой раздел переполнен
du -sh /* # Размер директорий
find . -type f -size +100M # Большие файлы
# Решение
rm -rf old_logs/* # Удалить логи
cleaner # Удалить ненужные пакеты
Инструменты мониторинга
# Установка htop (лучше чем top)
sudo apt install htop
htop
# Установка iotop (мониторинг диска)
sudo apt install iotop
sudo iotop
# Установка nethogs (мониторинг сети)
sudo apt install nethogs
sudo nethogs
Заключение
Опыт работы с Linux — это критичный навык для Node.js backend-разработчика:
- Production серверы работают на Linux
- Docker контейнеры основаны на Linux
- Развертывание и мониторинг требуют Linux знаний
- Диагностика проблем требует Linux команд
- Автоматизация через bash скрипты
Минимальный уровень: комфортная работа с терминалом, навигация, работа с файлами, управление процессами, базовые скрипты.
Профессиональный уровень: systemd, Docker, мониторинг, оптимизация, automation, безопасность.