her saatte bir komut çalıştırması


12

Sfenks için bir dizinleyici var ve ben linux saatte bir çalıştırmak istiyorum. Bunu nasıl yaparım?

linux 

Yanıtlar:


14

Herkes kısa cevaplar gönderdiğinden, biraz daha açıklayıcı olacağımı düşündüm ...

cron Belirtilen aralıklarla zamanlanmış komutlar çalıştıran çoğu * nix sistemde bulunan bir daemon'dur.

Listeye bir komut dosyasını istediğiniz klasöre kopyalayarak eklersiniz:

  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron.weekly

Bu klasörler genellikle /etcklasör altında bulunur .


2
* klasörler çok fazla distro özelliğine sahiptir. crontab, öğelerin belirli aralıklarla cron tarafından çalıştırılmasının evrensel yoludur.
MDMarra

Doğru. Sadece bir örnek veriyorum. crontab zaten çok daha fazla kontrol sağlıyor.
Nathan Osman


7

Sadece farklı olmak için -

ihtiyaçlarınıza bağlı olarak watch komutunu kullanabilirsiniz.

  watch --interval=3600 command

1
Bu komut her 1 saatte bir çalışır mı? veya komutu çalıştırıyor, 1 saat bekleyip tekrar çalışıyor mu? Komut çok uzun sürerse iyi bir fark yarattığını unutmayın. (Soruyorum çünkü adam sayfasından belli değildi.)
Malabarba

Gerçekten kendiniz denemek o kadar da zor değil.
mimoralea


2

komutu girerek cron dosyasını düzenleyeceksiniz crontab -e

bu da sizi bir 'vi' düzenleyicisine bırakır (mevcut Linux ve FreeBSD için).

ardından aşağıdakileri girin: (ekleme için 'i' yazın)

00 * * * * /path/to/sphinx_indexer.exe

sonra kaydedin ve çıkın ('esc' tuşuna basın ve aşağıdakileri yazın)

:wq



1

Arada bir ihtiyaç duyduğunuzda, kalıcı olarak elde ettiğiniz gibi değil cronve watchçözüm yeterince esnek değilse, iyi eski bash komut dosyalarını da kullanabilirsiniz:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Bu, yürütülmesi 3599 saniye sürerse #do Öğeleri olarak çalışmaz ve daha sonra gereksinime göre komut dosyasının bir sonraki saniyeyi beklemede tetiklemesi ve saati 0'a sıfırlaması gerekir, ancak bu durumda 3599. saniyede duraklar ve sonra 3600 saniye daha uyumaya devam edin. Bir çakışma olmayacak, iterasyonlar arasında beklenmedik bir boşluk olacak. Burada kullanıcı her saat cron olmadan bir iş yürütmeye çalışıyor sanırım.
mannoj

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.