Cron 不支持 shell 脚本

Cron 不支持 shell 脚本

在学习/理解Linux的过程中(困难但享受它)。我编写了一个非常短的 shell 脚本,它使用 wget 从网站中提取 index.html 文件。

#!/bin/bash

#Script to wget website mywebsite and put it in /home/pi/bin

index=$(wget www.mywebsite.com)

当我在命令行中输入命令 wget_test 时,这会起作用。它将 .html 文件输出到 /home/pi/bin 中。

我已经开始尝试通过 cron 来执行此操作,这样我就可以在特定时间执行此操作。我使用 crontab -e 输入以下内容

23 13 * * *   /home/pi/bin/wget_test

在此示例中,我希望脚本在 13.23 运行并将 .html 文件输出到 /home/pi/bin,但什么也没发生。

答案1

此行index=$(wget www.mywebsite.com)会将变量设置$index为空。这是因为(默认情况下)wget不会写入任何内容标准输出所以没有什么可以放入变量中。

所做wget的是将文件写入当前目录。 Cron 作业从您的$HOME目录运行,因此如果您想将文件写入您的$HOME/bin目录,您需要执行以下两件事之一

  1. wget -O bin/index.html www.mywebsite.com
  2. cd bin; wget www.mywebsite.com

顺便说一句,一个人的~/bin目录通常是存储个人脚本和程序的地方,因此最好考虑在其他地方编写定期从网站检索的文件。

答案2

确保您的 bash 脚本具有可执行权限,并确保为所需用户设置了 cronjob。

我认为正在发生的事情是脚本中的命令只需要是:

wget www.mywebsite.com/index.html

相关内容