web-dev-qa-db-ja.com

Letsencrypt / certbot systemd timer / serviceがUbuntu18.04で機能しない

Nginx用のcertbotをインストールすると、自動更新スクリプトが自動的にセットアップされますが、実行するたびに受信するメールは次のとおりです。

/home/foobar/certbot-renew.sh: 1: /home/foobar/certbot-renew.sh: /usr/bin/certbot: not found

私を混乱させるのは、私のホームディレクトリにcertbot-renew.shがないことです...?

systemctlからの詳細情報:

# /lib/systemd/system/certbot.timer
[Unit]
Description=Run certbot twice daily

[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true

[Install]
WantedBy=timers.target

そして

# /lib/systemd/system/certbot.service
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true

Systemdを初めて使用するので、助けていただければ幸いです。

編集:

@grawityが提案したように、代わりにcrontabをチェックして、これを見つけました。

foo@bar:~$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

またこれ:

foo@bar:~$ cat /etc/cron.d/certbot
# /etc/cron.d/certbot: crontab entries for the certbot package
#
# Upstream recommends attempting renewal twice a day
#
# Eventually, this will be an opportunity to validate certificates
# haven't been revoked, etc.  Renewal will only occur if expiration
# is within 30 days.
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && Perl -e 'sleep int(Rand(43200))' && certbot -q renew

明確にするために:

foo@bar:~$ which certbot
/usr/bin/certbot

foo@bar:~$ certbot --version
certbot 0.26.1
1
moritzjacobs

Certbotには、更新する独自のサービスがあり、追加のcrontab行は必要ありません。理論的には。

実際に私は種をまきましたcertbot.timer理由もなく表示を停止する:

$ Sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily
   Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
   Active: inactive (dead) since .....; 1 months 7 days ago

その場合、再起動すると次のようになります。

Sudo systemctl enable certbot.timer
Sudo systemctl start certbot.timer

機能を停止する理由はまだわかっていません。

1
sanmai

Systemdサービスは電子メール通知を生成しません。 cronジョブは行います。

これはすべて、表示されているsystemdユニットが問題に関連していないことを示しています(すでに問題なく動作している可能性があります)–しかし、同じタスクがanother place;から実行されています。ほとんどの場合、crontabで定義されたジョブです。

使用する crontab -lユーザーアカウントのcronジョブを一覧表示します。crontab -eそれらを編集します。

自分のcrontab、rootのcrontab(Sudo経由)、およびシステム全体を確認してください/etc/crontabファイル(そのための特別なコマンドはありません)。

0
user1686