我尝试了crontab,但是它不起作用,它看不到文件目录

时间:2018-07-30 10:19:19

标签: cron

我在Amazon linux 2 ami上创建了一个crontab,并且在crontab中创建了一个cronjob:

00 * * * * /var/www/html/cront.sh
01 * * * * /var/www/html/cront2.sh
30 * * * * /var/www/html/cront.sh
31 * * * * /var/www/html/cront2.sh

但是它不起作用。为什么?

编辑:我尝试手动执行脚本,并且我注意到如果我在bash上打印:

./var/www/html/cront.sh

不起作用,但如果我执行printf:

./cront.sh

有效。 (但我必须留在var / www / html目录中) 为什么会出现这个问题?我该如何运行能正常工作的cronjob?

谢谢

1 个答案:

答案 0 :(得分:-1)

您是否检查了这些脚本的权限?

此外,也许尝试将您的条目更改为:

00 * * * * /bin/bash /var/www/html/cront.sh
01 * * * * /bin/bash /var/www/html/cront2.sh
30 * * * * /bin/bash /var/www/html/cront.sh
31 * * * * /bin/bash /var/www/html/cront2.sh

看看是否可行。

编辑:由于此方法有效,我将添加一个简短的解释为什么可以解决问题...

首先,脚本可能不具有对其进行crontab的用户的执行权限('x')。通过解释器调用脚本时,解释器显式地绕过了这一点,因为不再尝试执行脚本,而只是尝试读取脚本。

第二种可能性是shell脚本使用bash特定的语法。 cron的默认外壳是sh,比bash更基本和更受限制的外壳。调用bash解释器可以专门解决此问题。请注意,您还可以为第一行带有shebangs(#!/bin/bash)的脚本指定所需的解释器。