crontabでwgetコマンドが1つしか機能しないのはなぜですか?


15

サーバー上のPHPスクリプトから1日に2回コンテンツを取得し、クエリ変数langを変更して必要な言語を設定し、このコンテンツを2つの言語固有のファイルに保存します。これは私のcrontabです:

*/15 * * * * ~root/apache.sh > /var/log/checkapache.log
10 0 * * * wget -O /path/to/file-sv.sql "http://mydomain.com/path/?lang=sv"
11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en"

問題は、最初のwgetコマンドラインのみが実行されていることです(正確には、書き込まれているファイルはのみです/path/to/file-sv.sql)。2行目と3行目を切り替えると、/path/to/file-en.sql代わりに書き込まれます。最初の行は、どこにいても常に期待どおりに実行されます。

それlynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sqlから、私は何の役にも立ちませんでした。それでも、最初のlynx行のみが正常に実行されました。wgetとlynxを混合しても、これは変わりませんでした!

ちょっと必死になって!何か不足していますか?crontab(wgetまたはlynxと組み合わせた)には何千もの記事がありますが、すべてが基本的なセットアップと構文をカバーしているようです。誰かが私が間違っていることの手がかりを手に入れましたか?

ありがとう、
アレクサンダー


mydomain.com/path/?lang=enにアクセスすると必ず何かが返されますか?何が起こるかを確認するためにコマンドラインからこれを試しましたか(wget -O-mydomain.com/path/?lang=en)?
トリアン

1
私は2と3の間に改行を消去して再作成しようとするだろう
アントニウスブロッホ

ベストプラクティスは、crontabで実行可能ファイルへのフルパスを指定することです。「/ usr / bin / wget」のように。cronの1つが機能するため、これがあなたの場合に役立つとは思わない。
アントニウスブロッホ

これが発生すると、cronのログには何が表示されますか?

@トリアン:魅力のように動作します。
アレクサンダーウォリン

回答:



2

間違っているテキストについて何かがあります。vimでcrontabを編集し、見えない文字を表示します。

:set invlist

確認してから修正できるはずです。


どうして?Vimで編集するにはどうすればよいですか?コピー&ペーストで問題が発生する場合に備えて、ファイル全体を書き直してみました。
アレクサンダーウォリン

@afEkenholm:どのように編集しますか?
バハマ

1
@bahamat:# crontab -e
アレクサンダー

@afEkenholm:これを行う:EDITOR=vim crontab -e
バハマ

@bahamat:すべてがうまく見えます。$各行の終わりに紫色がありますか?
アレクサンダーウォリン

1

リダイレクトを追加して、crontabをデバッグします(またはルートメールを読み取ります)。

11 0 * * * wget -O /path/to/file-en.sql "http://mydomain.com/path/?lang=en" > /tmp/crontab_ouptput 2> /tmp/crontab_error

また、コンソールから'wget -O /path/to/file-en.sql " http://mydomain.com/path/?lang=en "'を実行します。

また、新しいcrontabの検証には「crontab -e」を使用します。

また、動作していない行を削除して、キーボードから再入力してみてください。

corntabをバックアップしてコマンドを実行します:

crontab -l | crontab -

追加/tmp/crontab_ouptput 2> /tmp/crontab_errorは最初の行でのみ機能します。コンソールからコマンドを実行すると問題なく動作します。ファイル全体を素手で書き直しましたが、何も変わりませんでした。
アレクサンダー

crontabをバックアップして試してください:crontab -l | crontabの-
alvosu

@alvosuの努力に感謝しますが、簡単な改行でうまくいきました!
アレクサンダーウォリン

1

cronieを実行しているシステムで、上記の回答(改行の追加、改行の削除など)を試しみました。最後に、各ユーザーの最初のcronジョブのみを実行するバグがcronie 1.5.3にあることがわかりました。1.5.4で修正されています

https://github.com/cronie-crond/cronie/issues/30

これが誰かの時間を節約することを願っています...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.