2011-10-22 13 views
10

Örnek:Argümanlarla bir cron işi nasıl çalıştırabilirim ve sonuçları bir günlüğe nasıl geçirebilirim?

* * * * * /usr/bin/php /full/path/to/script.php arg1 arg2 > /full/path/to/logfile.log 

komut çalışır ve sadece iyi argümanlar erişir, fakat sonuçlar logfile.log için basılmış asla. Ayrıca, logfile.log chmod 777, bu yüzden yazma erişimi olduğunu biliyorum.

Sözdizimi giderebilir miyim?

+1

Kullanıcı klasöre yazma erişimi var mı? – mik

+0

evet, klasör ve dosya. Aynı dizinde çalışan diğer günlükler var. Sorunun argümanlarla olduğunu sanıyordum. Ama benim sözdizim doğruysa, hata ayıklamak için biraz daha uğraşmak zorunda kalacağım. – Ryan

+1

Belki de "* * * * *' yi kullanmamalısınız çünkü bu her 60 saniyede bir günlüğün üzerine yazılıyor ... ">>' ile eklediğinizde ne görüyorsunuz? – Jens

cevap

11

Günlük dosyasını yanlış klasörde aradığınız anlaşılıyor. // yol/komut klasöründe günlük dosyası için bakmak Sonra bu

* * * * * cd /path/to/script.php ; ./script.php arg1 arg2 >> logfile.log 

deneyin. Ayrıca bir yazma izni sorunu da olabilir. Ayrıca, komut dosyanız için hata olup olmadığını kontrol edin. Crontab komutunuz iyi görünüyor.

+0

Üzgünüz, sorum tamamen açık değildi. Tüm zaman boyunca kök yolu kullanıyorum. Netleştirmek için yeni bir soru güncelledim. Yani bunun doğru format olduğunu söylüyorsun, değil mi? – Ryan

+0

Şimdi komut tamam görünüyor, yazma izinleri sorunu olabilir mi? Ayrıca, cd/path/to/script'i de deneyin, yardımcı olabilir. – mik

+0

@ rcode74: Düzenlemeniz komutu kırdı. Onu geri alacağım. 'Script.php' *' i içeren dizine 'cd' yapmalı ve sonra * betiği çağırmalıdır. '/ Path/to/script.php' literal değildir; betiği içeren herhangi bir dizinin adını gösterir. –

1

Komut, komut satırından düzgün çalışıyor mu? Argümanlar özel olarak kabuk tarafından işlenen bazı karakterler içerebiliyor olabilir. Bu durumda, kabuğun argümanlarla uğraşmasını önlemek için tüm komutu alıntılamanız gerekir.

İlgili konular