(我已经读过如何测试一个新的cron脚本?。)
我有一个具体的问题(cron job似乎没有运行,或者没有正常运行),但这个问题很普遍。我想调试那些被编排的脚本。 我知道我可以设置一个 * crontab行,但这并不是一个完全令人满意的解决方案。 我希望能够从命令行中运行一个cron作业,就像cron在运行它一样(同样的用户,同样的环境变量,等等)。 有什么办法可以做到这一点吗? 必须等待60秒来测试脚本的变化是不现实的。
在我看到的大多数默认的cron守护程序中,根本没有办法告诉cron现在就在这里运行。如果你使用anacron,我想有可能在前台运行一个单独的实例。
如果你的脚本不能正常运行,那么你就没有考虑到这点。
从crontab(5)来看。
有几个环境变量是 由cron(8)自动设置的 守护程序设置的。 SHELL被设置为/bin/sh,而 LOGNAME和HOME是由 /etc/passwd行的crontab的 所有者。PATH被设置为"/usr/bin:/bin"。 HOME、SHELL和PATH可能被 中的设置来覆盖。 crontab;LOGNAME是指作业运行的用户。 作业运行的用户,并且不能被 改变。
一般来说,PATH是最大的问题,所以你需要。
如果你需要以其他没有shell的用户(例如www-data)的身份运行脚本,请使用sudo。
sudo -u www-data /path/to/crontab-script.sh
当然,在所有这些之前,首先要测试的是你的脚本是否真的能从命令行中完成它应该做的事情。如果你不能从命令行中运行它,它显然就不能从cron中运行。