在 crontab 中使用 Gnu Make
Gnumake in crontab
我正在尝试从 cron 中 运行 创建文件。我的命令很简单:
* * * * * /usr/bin/make -C "/home/path_to_file/" -f "/home/path_to_file/Makefile"
它 运行 通常在 shell 中,但它在 crontab 中失败。
- 如何调试此类问题?
- 有什么建议是我的错误吗?
它可能会失败,因为 PATH
未设置。您应该在 Makefile
中设置 PATH 并将其导出:
PATH := /usr/bin:/usr/local/bin:/some/other/dir
export PATH
您可以通过指定非常有限的环境来测试您的命令:
/usr/bin/env -i PATH=directorylist_here HOME=$HOME your_cron_cmd
PS:通常,cron 会将 stdout 和 stderr 上的任何输出邮寄给您。您是否检查过收件箱中的 cron 邮件?这些可能会提供额外的线索。
邮件被发送到 crontab 所属用户的邮箱。因此,如果这是 运行 作为 root,它将在 root 的收件箱中。 (当然这只有在 stdin+stdout 没有被重定向到 /dev/null
时才有效)。在 Unix 系统上,您可以使用 mail
或 mailx
命令阅读收件箱邮件。
我正在尝试从 cron 中 运行 创建文件。我的命令很简单:
* * * * * /usr/bin/make -C "/home/path_to_file/" -f "/home/path_to_file/Makefile"
它 运行 通常在 shell 中,但它在 crontab 中失败。
- 如何调试此类问题?
- 有什么建议是我的错误吗?
它可能会失败,因为 PATH
未设置。您应该在 Makefile
中设置 PATH 并将其导出:
PATH := /usr/bin:/usr/local/bin:/some/other/dir
export PATH
您可以通过指定非常有限的环境来测试您的命令:
/usr/bin/env -i PATH=directorylist_here HOME=$HOME your_cron_cmd
PS:通常,cron 会将 stdout 和 stderr 上的任何输出邮寄给您。您是否检查过收件箱中的 cron 邮件?这些可能会提供额外的线索。
邮件被发送到 crontab 所属用户的邮箱。因此,如果这是 运行 作为 root,它将在 root 的收件箱中。 (当然这只有在 stdin+stdout 没有被重定向到 /dev/null
时才有效)。在 Unix 系统上,您可以使用 mail
或 mailx
命令阅读收件箱邮件。