Crontab - Dizinde çalıştır


170

Kök crontab'da günlük olarak çalışacak bir iş ayarlamak istiyorum. Ancak belirli bir dizinden yürütmek istiyorum, böylece uygulama göreli yollar bir demet olduğundan, ihtiyaç duyduğu tüm dosyaları bulabilir.

Her neyse, crontab'a belirli bir dizinden çalışmasını söyleyebilir miyim?

Yanıtlar:


318

Tüm işler bir kabuk tarafından yürütülür, bu nedenle dizini değiştirme komutuyla o kabuk snippet'ini başlatın.

cd /path/to/directory && ./bin/myapp

&&Bunun yerine ;: kullanımı ile ilgili olarak, normalde bir fark yaratmaz, ancak uygulama ile cdkomut başarısız olursa (örneğin, dizin mevcut olmadığından) &&, ;yürütülürken (ancak amaçlanan dizinde değil) ).


Çoğunlukla yinelenen bir cevap eklemek yerine, sadece SHELLcrontab'ınızda ayarlayarak hangi kabuğu (örneğin sh yerine bash'a ihtiyacınız varsa) seçebileceğinizi eklememe izin verin .
Edd Steel

12
+1. ilgili her sorunun çözümü betiği mutlak yollarla yeniden yazmaktır. tam da ihtiyacım olan şey bu
Conrad.Dean

2
Meraktan, ;çift ​​ve işareti yerine bir noktalı virgül kullanabilir misiniz &&, yoksa işe yaramaz mı? Ve neden?
Joshua Pinter

32
@JoshPinter Normalde bir fark yaratmaz. Ancak cdkomut başarısız olursa (örn. Dizin mevcut olmadığından), ile &&uygulama yürütülmez. İle ;, yürütülür (ancak amaçlanan dizinde değil).
Gilles 'SO- kötü olmayı kes'

1
Bunu uygulamalarımın tüm cron işlerine yapacağım, beni kaynak dosyalarımı değiştirmekten kurtardın, çok teşekkür ederim
Muhasebeci م
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.