我在Amazon 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不起作用,但如果我打印:
./cront.sh它起作用了。(但我必须呆在var / www / html目录中)为什么会出现这个问题?我怎样才能运行一个工作的cron作业?
谢谢
发布于 2018-07-30 10:24:57
你检查过那些脚本的权限了吗?
此外,也可以尝试将条目更改为:
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的默认shell是sh,这是一个比bash更基本和更有限的shell。调用bash解释器专门解决了这个问题。请注意,您还可以为第一行带有shebang (#!/bin/bash)的脚本指定所需的解释器。
https://stackoverflow.com/questions/51591780
复制相似问题