Я использую screen и обвязку на bash. В таком варианте всегда можно к консоли скрипта подключиться и посмотреть на нее.
Выглядит этот так в скрипте, который периодически запускается в системе для восстановления упавших процессов
screen -ls | grep "mybotname\s" ||screen -d -m -S mybotname bash -c 'cd /path/to/bot; bash mybotname-daemon.sh' >>/dev/null
в самом скрипте mybotname-daemon.sh'
#!/bin/bash
cd /path/to/bot
while `true`
do
# здесь команда запуска нашего бот, например:
python mybotname-daemon.py
sleep 1
echo "Restarting program..."
done
В таком виде все это работает уже несколько лет.