原因是cron中仅传递少部分环境变量,如下
LANGUAGE=en_US.utf8:
HOME=/root
LOGNAME=root
PATH=/usr/bin:/bin
LANG=en_US.utf8
SHELL=/bin/sh
PWD=/root
而我想使用的命令文件在 /usr/local/bin/
目录中,不在默认的环境变量中
解决办法是在定时脚本中加入PATH变量
#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"
# 脚本内容
如果定时任务不是脚本文件,而是命令的话,可以用绝对路径的去执行命令,例如 /snap/bin/certbot ...
这样子。