4

У меня есть очень простой скрипт на Python, который я хотел бы всегда запускать на моем сервере Ubuntu 12.04. Я думал об использовании upstart + monit. Проблема в том, что эти инструменты кажутся довольно сложными для простого смертного, такого как я, и я не могу найти простой пример в Интернете.

Является ли upstart + monit overkill? Кто-нибудь знает более простую альтернативу? / или хороший учебник?

2 ответа2

9

Взято из этого ответа:

Вы могли бы написать скрипт bash monitor.sh который запускает ваш скрипт на python и перезапускает его, если он падает, но не перезапускается, если скрипт завершается нормально:

#!/bin/bash
until myscript.py; do
    echo "'myscript.py' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Затем просто запустите скрипт монитора в фоновом режиме:

nohup monitor.sh &

В качестве альтернативы nohup вы также можете использовать tmux или screen для запуска фоновых процессов.

1

Приведенный выше ответ великолепен. Я не могу комментировать на данный момент, так что, возможно, улучшить ответ здесь.

Возможно, вы даже захотите написать функцию для "myscript", так как это скрипт на python, и он не работает в среде bash.

Так,

#!/bin/bash

myscript(){
    python3 myscript [args..]
}

until myscript; do
    echo "'myscript' crashed with exit code $?. Restarting..." >&2
    sleep 1
done

Новые люди на python или bash не будут знать эту маленькую вещь. Мог бы помочь им. Вначале я боролся с такими мелочами. Не хочу, чтобы другие!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .