Выполнение крона это сначала

Я должен выполнить следующий набор команд как крон, который остановил бы мой nginx сервер, возобновил бы letsencrypt сертификат и затем запустил бы сервер снова, но после того, как вторая команда закончена.

У меня есть они как это:

sudo service nginx stop

sudo certbot renew

sudo service nginx start

Но как я выполняю их как крон?

Я предполагаю, что должен создать сценарий удара — но когда я пытался сделать это, он не запустится, поэтому возможно, я должен указать что-то прежде или после для него, чтобы быть выполненным?

Также также, как я удостоверяюсь, что последняя команда работает только после того, как второй выполняется?

Я плохо знаком с Ubuntu, таким образом, любой совет ценится, даже если вопрос кажется немного наивным.

Спасибо!

0
задан 24 April 2020 в 20:41

1 ответ

Читать man 5 crontab узнать о rootcrontab (таким образом, можно запустить скрипт как root, и не используют sudo). Затем после решения, что Вы хотите сделать когда certbot renew сбои, помещенные что-то вроде этого в сценарий где-нибудь, вызывают его с sudo пока это не будет работать, затем вызовите его от root crontab.

#!/bin/bash
# **warning! ** Untested code 
#
# tell nginx to stop
service nginx stop
# did it stop? exit status 0 => running, 3 => not
status=$(start-stop-daemon --status nginx --pidfile=/run/nginx.pid;echo $?)
while [[ $status -eq 0 ]] ; do
    # wait a tenth of a second
    sleep 0.1 
    status=$(start-stop-daemon --status nginx --pidfile=/run/nginx.pid;echo $?)
done
# Note: If nginx never stops, this will wait forever.
#
certbot renew
status=$?
if [[ $status -eq 1 ]] ; then
    service nginx start
else
    whatever you do when certbot renew fails
fi
0
ответ дан 25 April 2020 в 10:40

Другие вопросы по тегам:

Похожие вопросы: