在我的工作中,我们有一个 Linux 服务器,其中有多个 cron 作业,其语法wget -O /dev/null
后紧跟http
对PHP
文件或其他内容的请求。所以类似的东西wget -O /dev/null "http://foo.bar.com/file.php"
。
我已经能够找出它的各个部分各自的含义:
wget
:一个可以在Linux终端中使用的应用程序,无需GUI即可从网络资源下载文件。如果您有特定下载的 URL,例如 WordPress、PyCharm 等,您可以使用 -wget 来下载它,而无需实际访问该站点。wget -O
:该-O
选项允许您重命名正在下载的文件。因此,如果我正在下载 VS Code 但想重命名它,我可以运行wget -O <alternate name> <url to vscode download file>
.dev/null
:据我了解,这基本上是不需要的日志文件的转储。如果程序正在从终端运行,并且您不关心查看/存储输出,则可以将其定向到此处,它将被立即自动删除。基本上是一种为大型程序节省空间的方法。
我只是不明白他们在一起做什么 - 一起使用它们是否会将文件重命名PHP
为,/dev/null
以便 Linux 捕获它并删除它?这是某种速记语法,用于将文件重命名为空字符串,并将结果定向到/dev/null?
.或者更可能是我错过的不同的东西?
先感谢您!
答案1
/dev/null
是(伪)设备文件,它只是丢弃写入其中的所有内容。没有重命名涉及那里,wget -O file
只需打开指定的文件(可能创建它)并在那里写入。在这种情况下/dev/null
,操作系统只是丢弃写入的数据。
最终结果是从服务器请求有问题的 URL,所涉及的任何脚本都在服务器端运行,并且响应(如果有)被丢弃。
实际上重命名设备节点顶部的文件将用该文件替换设备节点。普通用户无法写入,但从长远来看,以 root/dev
身份运行可能会导致一些“有趣”的效果。mv somefile.txt /dev/null
如果没有该-O
选项,wget
将在当前目录中创建一个基于 URL 命名的文件,因此file.php
在本例中是这样的。