我每隔5分钟在我的crontab中运行以下命令,以使Phusion Passenger保持活跃状态。
*/5 * * * * wget mysite.com > /dev/null 2>&1
当我运行这个时,它在站点URL上执行wget将STDOUT / STDERR路由到/ dev / null。 当我从命令行运行它,它工作正常,不会在我的主目录中产生一个index.html文件。
当它从cron运行时,它会每五分钟创build一个新的index.html文件,给我留下大量我不想要的索引文件。
我的语法运行cron作业不正确吗? 从命令行它没有问题,但从cron它生成一个index.html文件在我的主目录。
我敢肯定,我犯了一个简单的错误,如果有人能帮上忙,我将不胜感激。
你可以这样做:
*/5 * * * * wget -O /dev/null -o /dev/null example.com
这里-O
将下载的文件发送到/dev/null
,将-o
日志发送到/dev/null
而不是stderr。 这种方式根本不需要redirect。
你需要实际下载内容还是只收到200 OK? 如果只需要服务器处理请求,为什么不简单地使用--spider
参数呢?
我会使用以下内容:
/5 * * * * wget -O - mysite.com > /dev/null 2>&1
-O -
选项确保获取的内容发送到stdout。
保持Phusion乘客活着。
可能你的问题应该是关于这个,网页上说:
一个快速和强大的Web服务器和应用程序服务器
这不应该需要任何keepalive脚本。
否则kasperd的解决scheme是完美的。
你说你只需要在评论中的“200 OK”的回应。
这使得解决scheme具有一些额外的优势
wget -O /dev/null -o /dev/null example.com
。 这个想法不是以某种方式丢弃输出,而是根本不创build任何输出。
您只需要响应就意味着下载到本地文件index.html中的数据不需要首先下载。
在HTTP协议中,命令“GET”用于下载文档 。 要以实际上下载文档的方式访问文档,有一个特殊的命令“HEAD”。
使用“GET”进行此任务时,文档将在本地下载并丢弃。 使用“HEAD”只是你所需要的,它并不是首先将文档转移。 根据定义,它将通常返回与“GET”相同的结果代码。
在wget
使用HEAD
方法的语法有点奇怪:我们需要使用选项--spider
。 在这种情况下,它只是做我们想要的 – 使用“HEAD”而不是“GET”来访问URL。
我们可以使用选项-q
(quiet)来让wget
不输出它所做的细节。
结合起来, wget
既不会输出任何东西到stderr,也不会保存文档。
wget -q --spider 'http://example.com/'
退出代码告诉我们请求是否成功:
$ wget -q --spider 'http://example.com/' $ echo $? 0 $ wget -q --spider 'http://example.com/nonexisting' $ echo $? 8
对于crontab
一个命令,在这两种情况下都没有输出的事实意味着你可以不再使用输出作为错误的指示。
您的示例命令将被更改为:
*/5 * * * * wget -q --spider mysite.com
这与wget -O /dev/null -o /dev/null example.com
具有相同的优点。 另外一个好处是不会生成日志输出和文档输出,而不是本地生成和丢弃。 当然,最大的区别是避免下载然后丢弃文件index.html
。