我曾经wget
每 10 秒调用一次链接,如下所示:
#/bin/sh
while true; do
wget http://www.some.random.link/to/some/PHP/script
sleep 10
done
这将生成名为script_name.#
where 的空文件#
,每次运行时都会增加该文件。
为什么会发生这种情况?
答案1
这是因为 wget 会下载脚本的输出(可能为空)并将其保存到文件中,每次都附加一个数字,以免覆盖先前下载的文件。
有几种方法可以防止这种情况发生。
- 使用以下选项防止 wget 下载任何内容
--spider
:
wget --spider http://www.some.random.link/to/some/PHP/script
但是,这可能会导致您的脚本无法工作,因为 IIRC,它仅发出一个HEAD
请求。 - 下载输出,但将其发送到以下地址以丢弃
/dev/null
:
wget -O /dev/null http://www.some.random.link/to/some/PHP/script
- 下载输出,但随后删除,使用以下
--delete-after
选项:
wget --delete-after http://www.some.random.link/to/some/PHP/script
- 为了完整起见,如果您可以忍受一个文件,请使用该
-nc
选项来阻止 wget 下载本地已存在的文件:
wget -nc http://www.some.random.link/to/some/PHP/script
答案2
作为替代修复,您可以避免使用wget
- 顾名思义,它旨在获得从给定的 URL 下载 Web 内容。换句话说,它被设计为一个“下载”工具。(当然,它非常灵活,正如 Indrek 在他的回答中所展示的那样。但它的默认设置与你的目的背道而驰。)
因为你不需要或想实际下载任何内容(您只是访问 URL 来启动服务器端脚本),该curl
命令更适合您的脚本。默认情况下,它会将其请求的结果写入 stdout,而不是文件。
因此,只需在上面的代码中替换wget
即可curl
解决文件创建问题,无需进一步的操作。