Crontab 任务未运行

MEE*_*MEE 1 linux bash cron

我尝试创建一个非常简单的 cron 任务,将“Hello World”回显到名为/tmp/example.txt.

你可以从截图中看到,我试过:

28 23 * * * echo "Hello World" >> /tmp/example.txt

28 23 * * * root /bin/bash echo "Hello World" >> /tmp/example.txt
Run Code Online (Sandbox Code Playgroud)

同样在屏幕截图中,您可以看到日期。我还尝试在 cron 任务中获取确切日期(例如:28 23 29 11 4),但这也不起作用。

我也尝试使用实际文件

28 23 * * * ./pingstuff
Run Code Online (Sandbox Code Playgroud)

pingstuff文件只是谷歌坪。我可以运行这个文件并且它正确执行。但是,当我尝试在 crontab -e 中使用它时,在预定时间没有任何反应。(每次尝试后时间已相应更改。)

我以超级用户身份登录。我有权读/写/执行所有这些文件。我不确定我做错了什么。

在此处输入图片说明

n.s*_*.st 13

cronjob 可能无法执行,因为

  • cron 守护进程没有运行
  • crontab 中存在语法错误
  • 命令中有语法错误
  • 或者存在权限问题(例如未设置执行位)

要检查守护程序是否正在运行,请尝试service cron statussystemctl status cron(服务管理器取决于您的发行版)。守护进程也可能被称为稍微不同的东西,比如crondcronie
如果它没有运行,启动它(替换statusstart)。

如果它正在运行,请继续检查相关日志文件以查看作业是否实际运行。根据您的发行版,这可能会记录到/var/log/syslog/var/log/messages、特定于守护程序的文件(如/var/log/cron)或 systemd 二进制日志文件(journalctl -u cron以查看)。每次执行作业时,您应该看到一行。

当测试的crontab,设定的执行时间这在未来超过一分钟。一些 cron 实现“预先计划”了要运行的任务,即它们会在 12:33:00 决定在 12:34:00 运行什么,因此如果您34 12 …在 12 点添加cronjob,您将错过机会之窗:33:30。

如果作业运行但没有产生预期的结果,请尝试从 crontab 手动运行命令,作为同一用户,使用相同的 shell(通常是简约的/bin/sh)。
一个常见的陷阱(尽管这里不是这种情况)是%命令中的字符:它们被 cron 特殊处理,需要转义 ( \%) 才能被实际命令调用看到。
大多数 cron 实现还将每个 cronjob 的输出(如果有)作为电子邮件发送。如果您尚未设置通过 Internet 发送邮件,则这些邮件应存储在本地并可使用该mail命令读取。


G-M*_*ca' 5

你最大的问题是这/bin/bash echo "Hello World" 不是一个有效的命令。它寻找一个名为echo. 试试吧/bin/bash -c 'echo "Hello World"'

第二个问题是您应该为pingstuff.

引起我注意的第三个问题是/tmp/example.txt 已经存在(cat命令没有收到错误消息)。你确定你有写权限吗?(当然,如果您以 root 身份运行,那应该不是问题。)

另请参阅Ubuntu 14.04, 16.04, 18.04 Cron job does not execute,尽管它可能无关。