Пайплайн, который вы запустили, это процесс. У него есть номер (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.
Практика
- 1. Посмотрите список процессов
- 2. Выведите значение переменной PATH
- 3. Создайте переменную окружения STAGE со значением dev
- 4. Задайте DB_DSN=postgres://localhost/shop и убедитесь, что переменная видна через env
- 5. Сделайте scripts/load.py исполняемым
Что запомнить
ps aux | grep имяиkill PIDэто способ найти и остановить зависший скрипт.- Переменные окружения живут в оболочке:
exportсоздаёт,envпоказывает,~/.bashrcделает постоянными. - Секреты только в переменных окружения и
.env, никогда в коде. command not foundэто проPATH, а не про сломанный компьютер.