Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Когато искаме скрипт да работи непрекъснато на сървър или компютър, дори след като затворим терминала или се разкачим от SSH сесията, можем да използваме помощната програма screen. Тя ни позволява да създаваме виртуални терминални сесии, които остават активни във фонов режим.
В тази статия ще разгледаме как да използваме screen
, за да стартираме скрипт постоянно.
screen
Ако screen
не е инсталиран на вашата система, можете да го инсталирате със следната команда:
sudo apt install screen
screen
сесияСлед като screen
е инсталиран, създаваме нова сесия с име по наш избор (например train_monitor
):
screen -S train_monitor
Това ще отвори нов терминал в рамките на screen
сесията.
Ако използвате Python проект, който работи във виртуална среда, активирайте я:
source ~/train_env/bin/activate
Тук ~/train_env
е примерна директория на вашата виртуална среда.
След активирането на виртуалната среда, стартирайте вашия Python скрипт. В зависимост от настройките на системата ви, използвайте:
python3 bdz.py
screen
без спиране на скриптаСлед като стартирате скрипта, за да оставите процеса да работи във фонов режим и да се върнете към основния терминал:
Това ще "детачне" (откачи) сесията от терминала, но процесът вътре ще продължи да работи.
screen
сесияКогато искате отново да влезете в същата screen
сесия, използвайте:
screen -r train_monitor
Ако имате само една активна сесия, можете да изпуснете името и просто да напишете:
screen -r
screen
screen -ls
Прекратяване на сесия:
Влезте в сесията и натиснете Ctrl+D
или изпълнете командата exit
, за да я затворите.
Принудително убиване на сесия:
screen -S ИМЕ_НА_СЕСИЯТА -X quit
Ето ви и удобен скрипт, който автоматично ще направи всичко
Създайте нов файл, например 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
След като запишете файла, направете го изпълним:
chmod +x start_train_monitor.sh
Всеки път, когато искате да стартирате скрипта, просто изпълнете:
./start_train_monitor.sh
Ако сесията вече съществува, скриптът автоматично ще ви върне в нея. Ако не съществува, ще стартира нова, активира виртуалната среда и ще пусне Python скрипта.
Използването на screen
е отличен начин да оставим скриптовете си да работят дълго време без прекъсване, независимо от състоянието на терминала. Това е особено полезно при работа със сървъри и дълготрайни автоматизации.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut