【发布时间】:2017-06-11 05:29:51
【问题描述】:
这是我的 crontab 文件的内容:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO="example@example.com"
*/5 * * * * sh /robot/1/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/2/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/3/master.sh
*/5 * * * * sh /robot/4/master.sh >/dev/null 2>&1
*/5 * * * * sh /robot/5/master.sh >/dev/null 2>&1
这是/var/log/cron 尝试运行时一直显示的错误:
crond[669]: (sh) ERROR (getpwnam() failed)
如果我手动运行这些文件中的任何一个,它们都可以正常工作。
crontab 文件有什么问题?
【问题讨论】:
-
旁白:
sh不是bash(即使它是 bash 的符号链接,它也以兼容模式运行,转换了许多功能)。如果您实际上没有使用 bash,请不要标记您的问题。 -
您是每半分钟还是每 5 分钟运行一次 cron? */5 表示它将每分钟运行一次,步长为 5。
-
无论如何,
getpwnam() failed总的来说非常简单。您系统的目录服务/存储是什么?例如,如果它被配置为与需要 Kerberos 身份验证的事物通信,那么您的 cron 作业可能没有有效的票证。 -
...也就是说:问题实际上与您的 crontab 文件无关,而与您的系统目录服务的方式有关——它提供了信息
getpwnam()查询 -- 已配置。这将意味着在你的系统配置中挖掘一下。 -
@DanielCortés */5 表示它将每 5 分钟运行一次。