Crontab 任务执行

Crontab 任务执行

我正在尝试通过 crontab 任务运行一个简单的脚本,但什么都没有运行。显示任何错误。我做了以下事情:

  • 使用以下代码创建一个简单的脚本:echo "Hola mundo"。我将脚本命名为 hola.sh。

  • 我希望使用 crontab 运行此脚本。我输入 crontab -e 并复制以下行,其中tmp在我的目录中创建了一个目录/home/alex

    15 * * * * /tmp/cat hola.sh
    

当第 15 分钟到达时,什么都没有显示。日志没有显示错误:

在此处输入图片描述

我做错了什么?

谢谢

答案1

可能或者不得tmp您的家中,但您的第二个 crontab 条目引用的是/tmp,它位于根目录下/,而不是在 /home/alex 下。

您似乎只是用cat空格将目录条目与命令分开,这是行不通的。

至于没有错误...检查你的邮件。crontab 中的命令输出不会出现在日志中。

请尝试以下操作:

15 * * * * /bin/cat /home/alex/hola.sh

但是,默认情况下,这也不会产生任何可见的输出;您需要在本地邮件中检查它。

答案2

脚本位置未明确指定。如果您命名的 tmp 目录实际上是 /home/alex 的子文件夹,那么您可以将脚本移动到其中,然后可以使用其绝对路径调用它:

/home/alex/tmp/hola.sh

请检查您的用户是否可以执行此脚本,即命令是否ls -l返回“x”作为第四个字符

ls -l /home/alex/tmp/hola.sh
-rwxr-x--- alex alex 220 2021-04-26 11:55:21 /home/alex/tmp/hola.sh

如果没有,你可以用以下方法修复它,chmod u+x /home/alex/tmp/hola.sh 那么 crontab 中涉及的条目应该类似于

15 * * * * /home/alex/tmp/hola.sh

cron 作业输出通常通过电子邮件发送,但您发布的屏幕截图中的错误还报告电子邮件系统现在正在运行(“未安装 MTA...”):然后您可以使用正常重定向收集输出(stdout 和 sterr):

15 * * * * /home/alex/tmp/hola.sh >/home/alex/tmp/output.txt 2>&1

相关内容