我正在做大学选修课的作业。我必须使用来自 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.txt
并sudo 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