Debian11虚拟机:改写Cron重启命令以创建日期命名文件夹
解决cron重启时创建日期命名文件夹的命令问题
改写后的可行命令(两种方式)
- 方式一:转义cron中的特殊字符
%@reboot /usr/bin/mkdir -p /home/bin/data/"$(/usr/bin/date '+\%Y\%m\%d')" - 方式二:指定bash执行整个命令(更贴近终端环境)
@reboot /bin/bash -c '/usr/bin/mkdir -p /home/bin/data/$(date "+%Y%m%d")'
关键原因解释
- cron中的
%是特殊字符:默认情况下,cron会把%解析为换行符,而非传递给date命令。直接写%Y%m%d会导致date无法识别格式,必须用反斜杠\转义每个%。 - cron默认shell为
sh而非bash:终端默认使用bash,而cron默认采用POSIX标准的sh,部分bash语法或环境变量在sh中不兼容。指定/bin/bash -c可让命令在bash环境下执行,与终端行为一致,此时无需转义%(单引号会阻止cron解析内部特殊字符)。 - 明确命令全路径:cron的PATH环境变量比终端窄很多,直接写
mkdir或date可能出现命令找不到的情况,因此最好指定全路径/usr/bin/mkdir、/usr/bin/date。
内容的提问来源于stack exchange,提问作者GKelly
相关产品推荐
相关产品推荐

