web-dev-qa-db-ja.com

cronのwdev出力を/ dev / nullにパイピング

Phusion Passengerを存続させるために、crontabで5分ごとに次のコマンドを実行しています。

*/5 * * * * wget mysite.com > /dev/null 2>&1

これを実行すると、サイトのURLでwgetが実行され、STDOUT/STDERRが/ dev/nullにルーティングされます。これをコマンドラインから実行すると、正常に動作し、ホームディレクトリにindex.htmlファイルが生成されません。

Cronから実行すると、5分ごとに新しいindex.htmlファイルが作成され、不要な大量のインデックスファイルが残ります。

Cronジョブを実行するための構文は正しくありませんか?コマンドラインからは問題なく動作しますが、cronからはホームディレクトリにindex.htmlファイルを生成します。

私は簡単な間違いを犯していると確信しています。誰か助けてくれるとありがたいです。

41
nulltek

あなたはこのようにすることができます:

*/5 * * * * wget -O /dev/null -o /dev/null example.com

ここで-Oは、ダウンロードされたファイルをstderrの代わりに/dev/nullに送信し、-oログを/dev/nullに送信します。この方法では、リダイレクトはまったく必要ありません。

65
kasperd

実際にコンテンツをダウンロードする必要がありますか、それとも200 OKを受け取る必要がありますか?サーバーにリクエストを処理させるだけでよい場合は、単に--spider引数?

私は以下を使用します:

/5 * * * * wget -O - mysite.com > /dev/null 2>&1

-O -オプションは、フェッチされたコンテンツがstdoutに送信されることを確認します。

10
Peter Lamby

コメントで「200 OK」という応答のみが必要であると言います。

それはそれらのそれらよりいくつかの追加の利点を持つソリューションを可能にします
wget -O /dev/null -o /dev/null example.com。アイデアは、何らかの方法で出力を破棄することではなく、まったく出力を作成しないことです。

応答のみが必要であることは、ローカルファイルindex.htmlにダウンロードされるデータを最初からダウンロードする必要がないことを意味します。
HTTPプロトコルでは、コマンド「GET」を使用してドキュメントをダウンロードします。すべてを行う方法でドキュメントにアクセスするexcept実際にドキュメントをダウンロードするには、特別なコマンド「HEAD」があります。
このタスクに「GET」を使用すると、ドキュメントがダウンロードされ、ローカルで破棄されます。 「HEAD」を使用しても、必要なことが実行され、最初にドキュメントが転送されることはありません。定義により、常に「GET」と同じ結果コードを返します。

メソッドHEADwgetとともに使用する構文は少し奇妙です。オプション--spiderを使用する必要があります。このコンテキストでは、必要なことだけを実行します。「GET」ではなく「HEAD」でURLにアクセスします。
オプション-q(クワイエット)を使用して、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をダウンロードして破棄しないことです。

5
Volker Siegel

phusion Passengerを存続させるため。

あなたの質問はこれについてである必要があります、ウェブページは言う:

高速で堅牢なWebサーバーとアプリケーションサーバー

これにはキープアライブスクリプトは必要ありません。

それ以外の場合、kasperdのソリューションは完璧です。

3
user237113