Crontab - 简单的回显未运行

37

我遇到了这样的情况: 我想在一个Linux服务器上使用crontab来安排任务。我不是超级用户,所以我只编辑自己的crontab文件(用crontab -l和vim编辑器)。为了测试,我将以下内容添加到其中:

* * * * * echo asdf

工作没有运行。是否需要重新启动服务器?或者是管理员的操作问题?


请检查您的电子邮件。cron作业的输出不会发送到您的终端,因为crond不知道您的终端在哪里。根据您的系统配置,通常会通过电子邮件发送给所有者(这可能是可能或不可能的)。有关更多信息,请参阅man cron - Keith Thompson
3个回答

52

也许是这样,cron作业会在它们自己的shell中运行。因此,您不能指望在控制台上看到asdf

您应该尝试的是

* * * * * echo asdf > somefile_in_your_home_directory_with_complete_path.log

接下来通过执行tail命令检查文件:

tail -f somefile_in_your_home_directory_with_complete_path.log

如果不行的话,请检查cron守护进程是否正在运行或已关闭:

# pgrep crond

或者

# service crond status

你能告诉我执行 pgrep crond 的输出应该是什么吗?我没有得到任何输出,但在运行 ps ax | grep cron 后,我可以看到 /usr/sbin/cron 正在运行。这样可以吗? - zlenyk
你应该看到cron守护进程的pid -- crond - Kedar Parikh
你是否获取了 /usr/sbin/cron 的进程 ID?日志文件中是否包含 asdf? - Kedar Parikh
1
是的,日志文件确实包含了asdf。非常感谢。 - zlenyk
我建议你使用 * * * * * echo date -- cron >> crontest.log 来跟踪所有消息并检查时间。 - angoru

7

如果您想在shell上输出信息,您可以使用 wall 命令:

* * * * * wall <<< "Hello from cron"
* * * * * echo "Hello from cron" | wall

这两行代码的作用基本相同,但第一行可能无法在较旧的shell上运行,只需选择您喜欢的即可。
无论如何,请注意wall会将消息发送给当前连接的每个用户。

我们能否使用命令 echo test 将文件执行到墙上? - YGautomo

1
对我来说,* * * * * /bin/echo text > file 不起作用...我不知道为什么,权限和其他设置都已经完成。(当我以特定的 root 用户身份执行此命令时,它可以正常运行,只是为了澄清这一点。)这可以通过在我的示例中注入路径 PATH=$PATH:/bin 来解决。
* * * * * echo text > file 正常工作,可能是路径问题。
希望我有所帮助。

echo 是 sh 的内置命令,是默认的 crond shell。它不在 bash 中。 - Rondo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接