Зачем это нужно
ML-модель в ноутбуке живёт на вашем ноутбуке. ML-сервис в продакшене живёт на Linux-сервере без графического интерфейса. Подключиться к нему можно только через SSH и терминал. DevOps и SRE каждый день работают в shell: смотрят логи, перезапускают процессы, проверяют место на диске.
Если вы боитесь чёрного экрана с мигающим курсором — этот урок снимет страх. Базовые команды Linux нужны каждому MLE так же, как import pandas.
Основные идеи
Файловая система. Linux — иерархия каталогов от / (root). Важные пути:
/home/user/— домашний каталог пользователя./etc/— конфигурационные файлы./var/log/— логи./tmp/— временные файлы.
Команды навигации:
pwd # где я нахожусь ls -la # список файлов (включая скрытые) cd /var/log # перейти mkdir -p models # создать каталог cp train.py train.py.bak mv old/ archive/ rm file.txt # удалить (осторожно!)
Права доступа. У каждого файла есть владелец, группа и права: read (r), write (w), execute (x). ls -l показывает -rw-r--r--: владелец читает/пишет, остальные только читают. Скрипт запуска inference должен быть executable: chmod +x serve.sh.
Процессы. Каждая запущенная программа — процесс с PID:
ps aux | grep python # найти python-процессы top # интерактивный монитор (CPU, RAM) kill 12345 # отправить SIGTERM процессу kill -9 12345 # жёсткое завершение (крайняя мера)
ML-сервис, «зависший» на загрузке модели, — первое, что проверяют через ps и top.
Переменные окружения (env). Конфигурация, которую приложение читает при старте:
export MODEL_PATH=/opt/models/fraud_v2.pkl export DATABASE_URL=postgresql://... echo $MODEL_PATH env | grep MODEL
Секреты передают через env, а не хардкодят в Python. В systemd-unit (следующий урок) env задают явно. Файл .env удобен локально, но не коммитится в Git.
Перенаправление и pipes:
python train.py > output.log 2>&1 # stdout и stderr в файл tail -f output.log # следить за логом в реальном времени cat access.log | grep "500" | wc -l # pipe: ошибки 500 → подсчёт
Как это выглядит на практике
On-call получает алерт: inference-сервис не отвечает. По SSH заходит на сервер:
ssh deploy@ml-prod-01.company.com cd /opt/scoring-service ps aux | grep gunicorn # процесс жив? df -h # диск не переполнен? ls -la models/ # файл модели на месте? export LOG_LEVEL=debug ./scripts/healthcheck.sh # локальная проверка
Диск заполнен на 100% — логи не пишутся, сервис падает. du -sh /var/log/* находит виновника, логи ротируют, сервис перезапускают.
Что сделать после занятия
На Linux или WSL выполните: навигация, создание файла,
chmod, запуск Python-скрипта с env-переменной.Найдите процесс
pythonчерезps, завершите его черезkill.Перенаправьте вывод учебного скрипта в файл и найдите строку через
grep.