Cron 不能使用 shell 脚本

her*_*ero 4 cron

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

#!/bin/bash

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

index=$(wget www.mywebsite.com)
Run Code Online (Sandbox Code Playgroud)

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

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

23 13 * * *   /home/pi/bin/wget_test
Run Code Online (Sandbox Code Playgroud)

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

roa*_*ima 6

此行将index=$(wget www.mywebsite.com)变量设置$index为空。这是因为(默认情况下)wget不会向stdout写入任何内容,因此没有任何内容可放入变量中。

什么wget确实做的是写一个文件到当前目录。Cron 作业从您的$HOME目录运行,因此如果您想将文件写入您的$HOME/bin目录,您需要执行以下两项操作之一

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

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