DEdeshka
ВойтиРегистрация
Урок 2.3 · 25 мин · текст

Процессы и переменные окружения

ps, top, kill, переменные окружения, .bashrc и PATH.

Пайплайн, который вы запустили, это процесс. У него есть номер (PID), он ест память и процессор, его можно найти и остановить. А параметры, которые ему нужны, вроде адреса базы и пароля, передаются через переменные окружения. Этот урок про то и другое.

Процессы

ps               # процессы в этом терминале
ps aux           # все процессы в системе, подробно
ps aux | grep python   # только питоновские
top              # живая картина: кто ест CPU и память, выход q
kill 2210        # вежливо попросить процесс завершиться
kill -9 2210     # убить без разговоров, если не помогло

Типичный сценарий: ночной скрипт завис, утром вы смотрите ps aux | grep etl, видите его PID и время работы, и решаете, ждать или убивать.

Фоновый запуск: добавьте & в конце команды, и терминал вернётся к вам сразу. Команда jobs покажет фоновые задачи, fg вернёт одну из них на передний план. Для долгих задач на сервере лучше nohup или tmux, о них в разделе «Глубже».

Переменные окружения

Переменная окружения это именованное значение, которое видят все программы, запущенные из этой оболочки. Так пайплайну передают адрес базы, ключи и режим работы, не зашивая их в код.

echo $HOME               # значение одной переменной
env                      # все переменные
export STAGE=dev         # создать или изменить
export DB_DSN=postgres://localhost/shop
unset STAGE              # удалить

Важная деталь: export действует только в текущем терминале. Закрыли окно, переменная исчезла. Чтобы она появлялась всегда, строку с export добавляют в файл ~/.bashrc (для zsh это ~/.zshrc), который оболочка читает при старте.

PATH и «command not found»

PATH это список папок через двоеточие, в которых оболочка ищет программы. Когда вы печатаете python3, она по очереди проверяет каждую папку из PATH. Ошибка command not found почти всегда значит одно из двух: программа не установлена или её папка не в PATH.

echo $PATH
which python3            # в какой папке нашлась команда
export PATH="$HOME/.local/bin:$PATH"   # добавить папку в начало списка

Права на выполнение

Чтобы файл можно было запустить как программу, ему нужен бит x. В ls -l он виден как rwx вместо rw-.

chmod +x scripts/load.py
./scripts/load.py

Полная таблица прав (chmod 644, 755, владельцы и группы) в разделе «Глубже», для старта достаточно +x.

Практика

учебный терминалзадания 0 / 5
Введите команду. Подсказка: help покажет, что умеет этот терминал.
de@deshka:~/project$
ЗАДАНИЯ
  1. 1. Посмотрите список процессов
  2. 2. Выведите значение переменной PATH
  3. 3. Создайте переменную окружения STAGE со значением dev
  4. 4. Задайте DB_DSN=postgres://localhost/shop и убедитесь, что переменная видна через env
  5. 5. Сделайте scripts/load.py исполняемым
решённые задания сохранятся в прогресс после входа

Что запомнить

  • ps aux | grep имя и kill PID это способ найти и остановить зависший скрипт.
  • Переменные окружения живут в оболочке: export создаёт, env показывает, ~/.bashrc делает постоянными.
  • Секреты только в переменных окружения и .env, никогда в коде.
  • command not found это про PATH, а не про сломанный компьютер.