【问题标题】:make certbot wait for another instance让 certbot 等待另一个实例
【发布时间】:2021-07-13 10:15:09
【问题描述】:

我在这里尝试做的是:我有一个由计时器控制的 systemd 服务,该计时器处理letsencrypt证书的更新。配置文件中规定了这些证书的外观。

[Unit]
Description=Let's Encrypt renewal

[Service]
Type=oneshot
Environment=CONFIG_FILE=/etc/letsencrypt/test.conf
ExecStart=-/usr/bin/certbot renew --quiet --agree-tos --noninteractive --no-random-sleep-on-renew

续订会运行一些后处理脚本,以确保部署和安装证书。

如果配置在证书生成和上次续订之间发生变化,这些脚本将找不到预期名称下的证书。然后脚本会自动触发另一个脚本,确保证书已创建:

if [[ ! -d /etc/letsencrypt/live/${CERT_NAME} ]]
then
  #certificate folder we expect isn't there , request a new cert
  . /etc/letsencrypt/renewal-hooks/request-new-cert.sh
fi

我遇到的问题是,在执行 request-new-cert.sh 期间,我收到一个错误 Another Instance of Certbot is already running,导致脚本失败。

我做错了吗?有没有更好的方法来尝试实现我想要做的事情?

【问题讨论】:

    标签: bash certificate systemd lets-encrypt certbot


    【解决方案1】:

    解决方案 1:

    您需要终止其他 certbot 进程。 您可以通过重新启动盒子或终止特定进程来做到这一点。 要查找 certbot 进程,请尝试:

    ps -ef | grep certb
    

    进程 ID 将是用户之后的第一个数字,例如:

    root 5555 5100 …
    

    要终止进程,请尝试:

    kill 5555
    

    注意: 将 5555 替换为您的实际 certbot PID#

    解决方案 2:

    如果没有运行,请检查您的系统中是否有 .certbot.lock 文件。

    find / -type f -name ".certbot.lock"
    

    如果有,您可以删除它们:

    find / -type f -name ".certbot.lock" -exec rm {} \;
    

    然后再试一次。

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多