中国区用户【acme.sh.log日志文件凌晨时间】展示12小时制时间引起误解

master
guoqw7 2025-05-17 12:53:30 +08:00
parent 28c3c0bbd2
commit 007226fc25
1 changed files with 11 additions and 42 deletions

@ -300,51 +300,20 @@ docker run --rm -it \
上述例子中使用 Cloudflare 的 DNS 来签发证书,并通过把 acme.sh 链接到容器[代理A],来转发 curl 请求(请按照自己实际设定修改)
# 9. acme.sh.log日志文件时间差矫正
## 时间差问题:
# 9. acme.sh.log日志文件时间展示问题
## 问题说明
证书每 60 天更新一次(可自定义),自己通过`/用户名/.acme.sh/acme.sh.log`路径下的日志实测查看:
会在**中午**检查并生成检查记录:`[12:48:01 AM CST 2025] Running cmd: cron......`
可官方文档明明指出,会在**每日凌晨**自动检查并生成检查记录。自己再次通过linux系统查看`acme.sh.log`的更新时间,的确是**每日凌晨**。那就说明.acme.sh运行时在中国产生了时差。
## 解决方案:
1. 在 `account.conf` 中指定时区环境变量
- 编辑 `acme.sh` 的配置文件 `~/.acme.sh/account.conf`,添加以下行:
```shell
export TZ='Asia/Shanghai'
```
- (如果文件已存在其他配置,直接追加即可)
2. ‌让配置生效
- 执行以下命令,使 `acme.sh` 重新加载配置并生成新日志:
```bash
acme.sh --renew-all --force
```
- 或针对特定域名强制更新:
```bash
acme.sh --renew -d yourdomain.com --force
```
3. **验证日志时间**
- 查看 `acme.sh.log` 日志文件,确认时间是否已修正:
```
tail -f ~/.acme.sh/acme.sh.log
```
## 附加说明‌:
- **原理**‌:通过 `export TZ='Asia/Shanghai'`,强制指定 `acme.sh` 运行时的时区环境变量,覆盖系统默认时区,确保日志时间与本地时间一致。
- **适用场景‌:**
- 系统时区已正确设置,但 `acme.sh` 因运行环境(如 `cron` 任务、Docker 容器)未继承时区。
- 日志服务(如 `rsyslog`)未使用本地时间记录日志。
- **【可选】通过命令参数矫正时区:**
1. **若通过 `cron` 自动续签**
- 在 `cron` 任务中直接指定时区变量,确保任务运行时环境正确:
```bashCopy
0 0 * * * export TZ='Asia/Shanghai'; /path/to/acme.sh --renew-all
```
2. **若使用 Docker 运行 `acme.sh`**
- 在启动容器时添加时区参数:
```bash
docker run -e TZ=Asia/Shanghai neilpang/acme.sh
```
小结:通过上述配置,日志时间应能正确对齐本地时间。若问题仍存在,请检查系统全局时区或容器运行时环境是否冲突。
可官方文档明明指出,会在**每日凌晨**自动检查并生成检查记录。自己再次通过linux系统查看`acme.sh.log文件`的更新时间,的确是**每日凌晨**。那就说明.acme.sh【运行或展示】时在中国产生了时差。
## 结论概述:
运行或展示均无问题!
而是中文语境对英文的12小时制时间有些人会有误解所以正确结论是
12小时制将一天分为两组12小时AM和PM其小时数字范围是 1至12而非24小时制的0至23
凌晨0:30 | 00:3024小时制 | 正确】12:30 AM | 【错误】00:30 AM | 混淆24小时制与12小时制的数字规则
中午12:30 | 12:3024小时制 | 正确】12:30 PM | 【错误】00:30 PM | 误将正午后的时间归为AM时段
## 原因分析:
如果你的服务器是12小时制那acme.sh.log日志文件也会跟着展示12小时制时间。据说acme.sh.log日志文件本身默认是24小时制的。
***