Neden crontab'ımda sadece bir wget komutu çalışıyor?


15

İstediğimiz langdili ayarlamak için bir sorgu değişkenini değiştirerek, sunucumdaki bir PHP komut dosyasından içeriği günde iki kez almak ve bu içeriği iki dile özgü dosyaya kaydetmek istiyorum. Bu benim 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"

Sorun, yalnızca ilk wget komut satırının yürütülmesidir (veya kesin olmak gerekirse: yazılmakta olan tek dosyadır /path/to/file-sv.sql). İkinci ve üçüncü satırı değiştirirsem, /path/to/file-en.sqlbunun yerine yazılır. İlk satır, nerede olursa olsun her zaman beklendiği gibi çalışır.

Daha sonra lynx -dump "http://mydomain.com/path/?lang=xx" > /path/to/file-xx.sqlboşuna kullanmayı denedim ; yine de sadece ilk vaşak hattı başarıyla yürütüldü. Wget ve lynx'i karıştırmak bile bunu değiştirmedi!

Biraz umutsuz oluyorum! Bir şey mi kaçırıyorum? Crontab (wget veya lynx) ile birlikte binlerce makale var, ancak hepsi temel kurulumları ve sözdizimini kapsıyor gibi görünüyor. Benim yanlış yaptığım şey hakkında bir ipucu var mı?

Teşekkürler,
Alexander


Mydomain.com/path/?lang=tr adresine her eriştiğinizde bir şeyin iade edildiğinden emin misiniz ? ne olduğunu görmek için bunu bir komut satırından denediniz mi (wget -O - alan_adim.com/yol/?lang=tr )?
Torian

1
2 ve 3 arasındaki taşıma dönüşünü silmeyi ve yeniden oluşturmayı denerdim.
Antonius Bloch

En iyi uygulama, crontab'daki yürütülebilir dosyalara giden tam yolu belirtmektir. Gibi: "/ usr / bin / wget". Cronslardan biri işe yaradığından, bunun sizin durumunuza yardımcı olacağını düşünmüyorum.
Antonius Bloch

Bu olduğunda cron günlüğünde ne görüntülenir?
fasulye

@Torian: Bir cazibe gibi çalışır.
Alexander Wallin

Yanıtlar:


42

Crontab'ınızın sonuna yeni satır eklemeyi deneyin.


1
Sen bir vaftizsin! Başardı! İtibarım olsaydı sana oy verirdim. :)
Alexander Wallin

1
@gelraen Ama ... neden?
Samuel

2

Metinle ilgili yanlış olan bir şey var. Crontab'ınızı vim'de düzenleyin ve görünmez karakterleri gösterin.

:set invlist

Görebilir ve sonra düzeltebilirsiniz.


Yanlış nasıl? Vim'de nasıl düzenlerim? Kopya yapıştırma işleminin sorunlara neden olması durumunda tüm dosyayı yeniden yazmayı denedim.
Alexander Wallin

@afEkenholm: şimdi nasıl düzenliyorsunuz?
bahamat

1
@bahamat:# crontab -e
Alexander Wallin

@afEkenholm: bunu yapın:EDITOR=vim crontab -e
bahamat

@bahamat: Her şey iyi görünüyor. $Her çizginin sonunda bir mor var mı?
Alexander Wallin

1

Crontab'da hata ayıklamak (veya kök postaları okumak) için yeniden yönlendirme eklemeyi deneyin:

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

Ayrıca 'wget -O /path/to/file-en.sql "çalıştırmak http://mydomain.com/path/?lang=en konsoldan"'.

Ayrıca yeni crontab doğrulaması için 'crontab -e' kullanın.

Ayrıca, çalışmayan satırı silmeyi deneyin ve klavyeden yeniden yazın.

Corntab yedekleme ve çalıştırma komutu:

crontab -l | crontab -

Ekleme /tmp/crontab_ouptput 2> /tmp/crontab_erroryalnızca ilk satır için geçerlidir. Komutu konsoldan çalıştırmak gayet iyi çalışıyor. Tüm dosyayı çıplak ellerimle yeniden yazdım, ancak hiçbir şey değişmedi.
Alexander Wallin

Yedek crontab ve deneyin: crontab -l | crontab -
alvosu

Çabalar için teşekkürler, @alvosu, ama basit bir satırsonu hile yaptı!
Alexander Wallin

1

Sadece cronie çalıştıran bir sistemde yukarıdaki cevapları (satırsonu ekleme, satırsonu silme vb.) Denemek için biraz zaman geçirdim . Nihayet bir hata var buldum cronie 1.5.3 sadece her kullanıcının ilk cron işi yürütür . 1.5.4'te düzeltildi

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

Umarım bu biraz zaman kazandırır ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.