Mengapa hanya satu perintah wget yang berfungsi di crontab saya?


15

Saya ingin mengambil konten dari skrip PHP di server saya dua kali sehari, mengubah variabel kueri languntuk menetapkan bahasa apa yang kita inginkan, dan menyimpan konten ini dalam dua file khusus bahasa. Ini crontab saya:

*/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"

Masalahnya adalah hanya baris perintah wget pertama yang dieksekusi (atau lebih tepatnya: satu-satunya file yang sedang ditulis adalah /path/to/file-sv.sql). Jika saya mengganti baris kedua dan ketiga, /path/to/file-en.sqlalih-alih ditulis. Baris pertama selalu berjalan seperti yang diharapkan, di mana pun itu.

Saya kemudian mencoba menggunakan tetapi lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sqltidak berhasil; masih hanya baris lynx pertama yang berhasil dijalankan. Bahkan mencampur wget dan lynx tidak mengubah ini!

Menjadi agak putus asa! Apakah saya melewatkan sesuatu? Ada ribuan artikel tentang crontab (digabungkan dengan) wget atau lynx, tetapi semua tampaknya mencakup pengaturan dasar dan sintaksis. Apakah ada yang tahu apa yang saya lakukan salah?

Terima kasih,
Alexander


Apakah Anda yakin bahwa setiap kali Anda mengakses mydomain.com/path/?lang=en sesuatu dikembalikan? sudahkah Anda mencoba ini dari baris perintah untuk melihat apa yang terjadi (wget -O - mydomain.com/path/?lang=en )?
Torian

1
Saya akan mencoba menghapus dan membuat ulang carriage return antara 2 dan 3.
Antonius Bloch

Praktik terbaik adalah menentukan path lengkap ke file executable di crontab. Seperti: "/ usr / bin / wget". Saya tidak berpikir ini akan membantu dalam kasus Anda, karena salah satu crons berfungsi.
Antonius Bloch

Apa yang ditampilkan dalam log cron ketika ini terjadi?
kacang

@Torian: Bekerja seperti jimat.
Alexander Wallin

Jawaban:


42

Coba tambahkan baris baru di akhir crontab Anda.


1
Anda adalah anugerah! Itu berhasil! Saya akan memilih Anda jika saya memiliki reputasi. :)
Alexander Wallin

1
@gelraen Tapi ... kenapa?
Samuel

2

Ada sesuatu tentang teks yang salah. Edit crontab Anda di vim lalu tunjukkan karakter yang tidak terlihat.

:set invlist

Anda harus dapat melihat dan memperbaikinya.


Salah bagaimana? Bagaimana cara saya mengeditnya di Vim? Saya mencoba menulis ulang seluruh file jika copy-paste akan menyebabkan masalah.
Alexander Wallin

@afEkenholm: bagaimana Anda mengeditnya sekarang?
bahamat

1
@ Bahahamat:# crontab -e
Alexander Wallin

@afEkenholm: lakukan ini:EDITOR=vim crontab -e
bahamat

@ Bahahamat: Semuanya terlihat baik-baik saja. Punya ungu $di akhir setiap baris?
Alexander Wallin

1

Coba tambahkan arahan ulang, ke debug crontab (atau baca root mail):

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

Jalankan 'wget -O /path/to/file-en.sql " http://mydomain.com/path/?lang=en "' dari konsol.

Juga gunakan 'crontab -e' untuk memvalidasi crontab baru.

Juga, coba hapus baris yang tidak berfungsi dan ketik ulang dari keyboard.

Cadangan corntab dan jalankan perintah:

crontab -l | crontab -

Menambahkan /tmp/crontab_ouptput 2> /tmp/crontab_errorhanya berfungsi untuk baris pertama. Menjalankan perintah dari konsol berfungsi dengan baik. Tulis ulang seluruh file dengan tangan kosong, tetapi tidak ada yang berubah.
Alexander Wallin

Cadangkan crontab dan coba: crontab -l | crontab -
alvosu

Terima kasih atas upaya Anda, @alvosu, tetapi baris baru yang sederhana berhasil!
Alexander Wallin

1

Saya hanya menghabiskan waktu mencoba jawaban di atas (menambahkan baris baru, menghapus baris baru, dll.) Pada sistem yang menjalankan kroni . Akhirnya ditemukan ada bug di cronie 1.5.3 yang hanya mengeksekusi pekerjaan cron pertama untuk setiap pengguna . Ini diperbaiki di 1.5.4

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

Semoga ini menghemat waktu seseorang ...

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.