Как перезапустить скрипт после автозагрузки.
Настраиваем автозапуск
Мы будем использовать cron для автозапуска нужного нам скрипта. Обычно для этих целей используют демонизацию, но чаще достаточно это сделать более простым способом.
Добавляем в cron:
crontab -e
Такую строку:
@reboot ~/_scripts/cron-autorun-reboot.sh > ~/_scripts/cron-autorun-reboot.log 2>&1
Не забываем сделать скрипт исполняемым:
chmod +x ~/_scripts/cron-autorun-reboot.sh
Содержимое скрипта:
В качестве примера приведен запуск celery после перезагрузки сервера.
#!/bin/bash
cd /home/ploshadka/ploshadka.net/
source venv/bin/activate
# Удаляем все что может перед этим работать
pkill -9 -f tasks.updates.celery && pkill -9 -f celery
# Иногда требуется для celery, иначе возникнут ошибки
export COLUMNS=80
# Добавляем задачи в планировщик
celery -A tasks.updates.celery beat --detach --config=configs.private.celery -l INFO --logfile=logs/beat.log
# Включаем worker
celery -A tasks.updates.celery worker -D --purge --config=configs.private.celery -l INFO --logfile=logs/celery.log
cd /home/ploshadka/ploshadka.net/
source venv/bin/activate
# Удаляем все что может перед этим работать
pkill -9 -f tasks.updates.celery && pkill -9 -f celery
# Иногда требуется для celery, иначе возникнут ошибки
export COLUMNS=80
# Добавляем задачи в планировщик
celery -A tasks.updates.celery beat --detach --config=configs.private.celery -l INFO --logfile=logs/beat.log
# Включаем worker
celery -A tasks.updates.celery worker -D --purge --config=configs.private.celery -l INFO --logfile=logs/celery.log
Ошибки
Ошибка ‘source: not found’ может возникнуть, если не указан тип файла или указан #!/bin/sh вместо #!/bin/bash