我正在从主机尝试在容器内执行cron任务,但是没有运气。从主机,我在下面添加以下行crontab -e
* * * * * docker exec -it sample_container bash -c 'touch /selected/directory/temp$(date +%H-%M)'
但这是行不通的。有趣的是,当我在crontab之外独立运行命令时,它已成功执行。谁能解释我在这里想念的东西吗?
注意:使用cron调试此类问题时,您应该在本地系统邮件中查找错误,或者通过[email protected]
在crontab文件顶部添加来将错误重定向至真实邮件。
您的crontab命令有2个问题
* * * * * docker exec sample_container bash -c 'touch /selected/directory/temp$(date +\%H-\%M)'
从 man -s 5 crontab
%
除非使用反斜杠(\
)进行转义,否则命令中的百分号()将被更改为换行符,并且第一个后的所有数据%
将作为标准输入发送至命令。
因此,您需要%
在日期格式字符串中转义那些符号
Cron不分配tty,而您正在尝试执行命令时使用tty(即的-t
选项docker exec
)。因此,该命令将失败并显示错误the input device is not a TTY
-i
无论如何,您都不需要交互()或分配tty来执行此命令,因此您必须删除这些选项以从cron启动它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句