Как да стартираме скрипт в постоянно работещ режим с screen на Linux

Когато искаме скрипт да работи непрекъснато на сървър или компютър, дори след като затворим терминала или се разкачим от SSH сесията, можем да използваме помощната програма screen. Тя ни позволява да създаваме виртуални терминални сесии, които остават активни във фонов режим.
В тази статия ще разгледаме как да използваме screen
, за да стартираме скрипт постоянно.
1. Инсталиране на screen
Ако screen
не е инсталиран на вашата система, можете да го инсталирате със следната команда:
sudo apt install screen
2. Стартиране на нова screen
сесия
След като screen
е инсталиран, създаваме нова сесия с име по наш избор (например train_monitor
):
screen -S train_monitor
Това ще отвори нов терминал в рамките на screen
сесията.
3. Активиране на виртуалната среда (ако е необходимо)
Ако използвате Python проект, който работи във виртуална среда, активирайте я:
source ~/train_env/bin/activate
Тук ~/train_env
е примерна директория на вашата виртуална среда.
4. Стартиране на скрипта
След активирането на виртуалната среда, стартирайте вашия Python скрипт. В зависимост от настройките на системата ви, използвайте:
python3 bdz.py
5. Излизане от screen
без спиране на скрипта
След като стартирате скрипта, за да оставите процеса да работи във фонов режим и да се върнете към основния терминал:
- Натиснете комбинацията:
Ctrl+A, после D
Това ще „детачне“ (откачи) сесията от терминала, но процесът вътре ще продължи да работи.
6. Връщане към активната screen
сесия
Когато искате отново да влезете в същата screen
сесия, използвайте:
screen -r train_monitor
Ако имате само една активна сесия, можете да изпуснете името и просто да напишете:
screen -r
7. Допълнителни полезни команди за screen
- Списък на всички сесии:
screen -ls
Прекратяване на сесия:
Влезте в сесията и натиснете Ctrl+D
или изпълнете командата exit
, за да я затворите.
Принудително убиване на сесия:
screen -S ИМЕ_НА_СЕСИЯТА -X quit
Бонус
Ето ви и удобен скрипт, който автоматично ще направи всичко
1. Създаване на скрипта
Създайте нов файл, например start_train_monitor.sh
:
nano start_train_monitor.sh
Поставете вътре следния код:
#!/bin/bash
# Име на screen сесията
SESSION_NAME="train_monitor"
# Път до виртуалната среда
VENV_PATH="$HOME/train_env"
# Име на скрипта
SCRIPT_NAME="bdz.py"
# Проверка дали вече има такава screen сесия
if screen -list | grep -q "$SESSION_NAME"; then
echo "Сесия '$SESSION_NAME' вече съществува. Свързване към нея..."
screen -r "$SESSION_NAME"
else
echo "Стартиране на нова screen сесия '$SESSION_NAME'..."
screen -S "$SESSION_NAME" -dm bash -c "
source $VENV_PATH/bin/activate
python3 $SCRIPT_NAME
exec bash
"
echo "Скриптът е стартиран във фонов режим в screen сесия '$SESSION_NAME'."
echo "Можете да се свържете с нея по-късно с: screen -r $SESSION_NAME"
fi
2. Даване на права за изпълнение
След като запишете файла, направете го изпълним:
chmod +x start_train_monitor.sh
3. Използване
Всеки път, когато искате да стартирате скрипта, просто изпълнете:
./start_train_monitor.sh
Ако сесията вече съществува, скриптът автоматично ще ви върне в нея. Ако не съществува, ще стартира нова, активира виртуалната среда и ще пусне Python скрипта.
Заключение
Използването на screen
е отличен начин да оставим скриптовете си да работят дълго време без прекъсване, независимо от състоянието на терминала. Това е особено полезно при работа със сървъри и дълготрайни автоматизации.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut