Это зависит от того, какую неудачу вы хотите защитить.Если это просто сбой скрипта, самое простое, что нужно сделать, это обернуть вашу основную функцию в попытку / исключение:
import logging as log
while True:
try:
main()
except:
log.exception("main() crashed")
Если что-то убивает процесс Python, возможно, проще всего запустить его вцикл оболочки:
while sleep 1; do python checker.py; done
И если он выходит из строя из-за того, что машина выходит из строя… ну… Quis custodiet ipsos custodes?
Однако, чтобы ответить на ваш вопрос напрямую: абсолютно простой способпроверить, запускается ли он из оболочки, было бы grep для вывода ps
:
ps | grep "python checker.py" 2>&1 > /dev/null
running=$?
Конечно, это не защищено от ошибок, но в целом это достаточно хорошо.