crontab 命令显示权限被拒绝

crontab 命令显示权限被拒绝

我正在 cent-OS 服务器上工作。我有两个脚本要通过 cron 运行。脚本使用 PHP 编写,我在 cent-OS 上安装了 PHP 的 Apache 模块。一个脚本应每天下午 6 点运行,另一个脚本应每周四运行。我的 cron 命令是:

00 18 * * * lynx -dump http://domain/folder1/script1.php //every Day

00 02 * * 5 lynx -dump http://domain/folder1/script2.php //every Thursday at 2am

我将这两行写入我的/etc/crontab文件中并尝试从执行

[root@domain ~]# /etc/crontab crontab
-bash: /etc/crontab: Permission denied

在网上搜索但没有解决方案。有什么想法我遗漏了什么吗?

答案1

crontab不是可执行文件。它由 cron 用来了解何时安排作业。

/etc/crontab不可执行(因此出现错误)

您的 crontab 文件无效(不允许使用 C 或 Java 风格的注释):

来自手册页:

第一个非空格字符为井号 (#) 的行是注释,将被忽略。请注意,注释不能与 cron 命令位于同一行,因为它们将被视为命令的一部分。同样,注释也不能与环境变量设置位于同一行。

你应该写类似的东西:

# every day
0 18 * * * lynx -dump http://domain/folder1/script1.php > /tmp/somefilename

请注意,这只lynx -dump会将页面打印到标准输出。如果要将其存储在某个地方,则需要将输出重定向到文件(参见示例)

要查看它是否有效,请等到 00:18 或使用更近的未来时间进行测试

答案2

知道我遗漏了什么吗?

没什么。你在错误的城市走进了错误的门,在错误的日子与错误的人交谈。除此之外,一切都如预期的那样。;-)

1) 您不应该通过在行//尾添加注释来注释您的 crontab 行。相反,请这样做:

# every day
00 18 * * * lynx -dump http://domain/folder1/script1.php

# every Thursday at 2am
00 02 * * 5 lynx -dump http://domain/folder1/script2.php //every Thursday at 2am

2) 您安排任务在每天 18:00 和每周四凌晨 2 点运行。如果您尝试在这些时间窗口之外运行 crontab,cron 将仅检查是否有事可做,如果没有,它就会退出。

3)您是否检查过/var/log/croncron 是否在预定的时间内尝试运行您的脚本?

4) Cron 对路径很挑剔。尽量提供 的完整路径lynx,最有可能是/usr/bin/lynx

5) 正如其他人提到的,/etc/crontab这只是一个文本文件,而不是可执行文件。Cron 守护程序将检查每个用户的 cron 文件的内容/etc/crontab,并在需要时执行某些操作。

相关内容