← Назад к вопросам

Как давно работаешь на Linux?

1.0 Junior🔥 231 комментариев
#DevOps и инфраструктура#Soft skills и опыт работы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Опыт работы с 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, безопасность.

Как давно работаешь на Linux? | PrepBro