简单脚本在终端中有效,但在 crontab 中无效

简单脚本在终端中有效,但在 crontab 中无效

我正在做大学选修课的作业。我必须使用来自 amazon ec2 的服务器并更改其域名,使用 apache 创建博客,并制作一个使用 crontab 定期运行的创意脚本。

基本上,我只是希望我的博客在新加坡时间晚上 8 点时有一个夜空背景,在早上 6 点时有一个白天天空背景。

我有一台 Windows 电脑,我的亚马逊服务器使用 Ubuntu,所以我使用 PuTTY 和 WinSCP 来编辑和其他内容。

其中/var/www/html有两个.txt文件,其中一个(day.txt)内容为:

cp -R /var/www/html/downloads/Day/index.html /var/www/html

它将位于 的索引文件替换/html为 html 中带有日间图片背景的文件。还有一个名为 night.txt 的文件,该文件与 相同,只是/Night/index.html不是/Day/index.html

假设当前index.html文件/html是带有白天图片的文件,我使用 putty 终端并运行夜间脚本./night.txt,它可以正常工作。当我刷新我的网站时,它会更改为白天背景,但当我尝试使用 crontab 执行此操作时,它不会。

因此我crontab -e在终端中输入并将该行更改为:

# m h  dom mon dow   command
18 14 *   *   *     /var/www/html/day.txt

我认为这应该在下午 2:18 运行,但每当我尝试用时间测试时它都不起作用。

我单击 ctrl o 保存并单击 ctrl x 退出,我确定 crontab 在那里,因为当我在 WINSCP 中查找它时,/tmp/crontab.7xxxx它就在那里,并且有正确的行。

我使用sudo chmod 700 night.txtsudo chmod 700 day.txt授予脚本 r/w/e 权限。

我不确定我还能包括什么。这是第一学期的课程,我们被鼓励在线寻求帮助,而我对这一切还很陌生。

答案1

我认为,cron 是它自己的用户,而你用 700 拒绝了它的权限。尝试将组更改为 cron,并授予其执行权限

chgrp cron /var/www/html/day.txt

chmod g+rx /var/www/html/day.txt

另外,请确保您的脚本中有正确的标题,例如:

#!/bin/bash

答案2

为了运行该脚本,它必须位于 .sh 或 shell 文件中。因此,您需要cp day.txt day.sh更改 crontab 中的行以反映此更改,并添加运行 shell 脚本的功能。确保将其包含#!/bin/bash在您的 shell 脚本中。

18 14 * * * sh /var/www/html/day.sh

相关内容