Soru Cron, çıkış durumu 127 ile başarısız [çift]


Bu sorunun zaten bir cevabı var:

Bir ray uygulaması için birkaç komisyon görevini yürütmek için crontab'ımı çalıştırmaya çalışıyorum, ancak her zamanki durumun 127 durumundan çıktığı anlaşılıyor, benim syslog'umda şöyle görünüyor:

Jun  7 05:10:01 ip-10-170-122-226 CRON[15664]: (deploy) CMD (cd /home/deploy/apps/dashboard/current && bundle exec rake some:task
Jun  7 05:10:01 ip-10-170-122-226 CRON[15662]: (CRON) error (grandchild #15664 failed with exit status 127)

127'nin "komut bulunamadı hatası" ya da benzeri bir şey olduğu anlaşılıyor, bu yüzden paketlere giden yolların tamamını kullandım. /usr/local/bin/bundleGörev, yalnızca cronun kabuk içinde çalıştığı dışında iyi çalışır.

Crontab'ım basitçe sadece:

*/10 * * * * cd /home/deploy/apps/dashboard/current && bundle exec rake some:task

Belki benim crontab ihtiyacım var #!/usr/bin ya da üstünde bir şey mi var?


güncelleştirme

Sadece test etmek için, bu sadece iyi çalışır gibi görünüyor:

*/1 * * * *  /usr/bin/touch /home/deploy/cron-test.txt

Böylece bu beni bir PATH varyantı gibi düşünmeye itiyor, ama orada doğru yolu nasıl bulacağımı bilmiyorum, herhangi bir düşünce var mı?


7
2018-06-07 05:35


Menşei




Cevaplar:


Çıkış durumu 127 komutu bulamadığında bash tarafından ayarlanır (bkz. Gelişmiş Bash Komut Dosyası). Hata ayıklamayı kolaylaştırmak için, tüm öğeleri bir komut dosyasına yerleştirmelisiniz. Komut dosyasının yürütülebilir olduğundan ve yorumlayıcı adı ve yolu ile başladığından emin olun:

#! /bin/bash
cd /.../ &&  next_command

Crontab satırına benzer şekilde sahip olmalısınız:

*/10 * * * * cd /home/deploy/apps/dashboard/current && /PATH_TO/bundle exec rake some:task

veya PATH değişkenini crontab'a ayarlayın:

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/PATH_TO_bundle
*/10 * * * * cd /home/deploy/apps/dashboard/current && /PATH_TO/bundle exec rake some:task

9
2018-06-07 21:51



crontab komutları tarafından yürütülür /bin/sh veya belirtilen kabukla SHELL değişken, bu yüzden 'cd', kabuk yeniden yönlendirme, değişken genişleme, koşulların vb crontabs kullanmak için Tamam. - AlexD
@AlexD - Bunu işaret ettiğiniz için teşekkür ederim. - Mircea Vutcovici


Görmek man 5 crontab Cron işleriniz için PATH nasıl kurulur.


1
2018-06-07 15:08



İnsanları doğrudan bir erkek sayfasına yönlendirmekten kaçınmaya çalışıyoruz. Soruya cevap vermeli ve daha fazla okuma için man sayfasına yönlendirmelisiniz. - Iain
iyi, ne olursa olsun benim Yol vars, bu almak için en iyi yol olup olmadığından emin değilim ama ne yaptım sadece benim PATH var dize benim env kopyalayın ve aynı crontab dosyasının üstüne yapıştırın , yapıştırmak zorunda kalmadan ENV'imle aynı şekilde çekilmesinin bir yolu var mı? Aksi takdirde ENV yolumu değiştirirsem crontab'ımın güncellendiğinden emin olmalıyım. - JP Silvashy


Bir göz atın: http://ubuntuforums.org/showthread.php?t=1760488 belki bu size doğru yönde işaret edecektir.

Genellikle cron işleriyle yaptığım şey bir betik dosyası oluşturmak, betiği test etmek ve daha sonra betiği cron'a yerleştirmektir.

Umarım bu yardımcı olur.


0
2018-06-07 12:44



Sunucu Hatası'na Hoş Geldiniz! Bu teorik olarak soruyu cevaplayabilirken, tercih edilirdi Burada cevabın önemli kısımlarını dahil etmek ve referans için bağlantıyı sağlamak. - Iain