Sistem cronjobs'u nereye koyabilirim?


11

Sistem düzeyinde çalışan bir cronjob gerekiyorsa (yani belirli bir kullanıcı için belirli değil) nasıl oluşturmamı önerirsiniz?

  1. crontab -ekök olarak çalışan
  2. eklemek /etc/crontab
  3. cronjob tanımlayan bir dosya oluşturma /etc/cron.d/
  4. cronjob'u tanımlayan bir dosya oluşturmak /etc/cron.*ly/(ancak sadece bu zaman aralığı ihtiyaçlarıma uyuyorsa)

Beni en çok endişelendiren şey şu: Bu çözümlerden hangisinin bir sistem güncellemesi ile üzerine yazılacağı ?

Ek olarak, eğer iş uzunsa , örneğin ayrı bir komut dosyasına koymam gerektiğini tahmin ediyorum /root/bin/. Katılıyor musun?


3
Hangi Unix veya Linux dağıtımını kullandığınızı belirtmelisiniz.
jlliagre

Ben sadece şimdi öğreniyorum :) Distro-bağımsız bir davranış olduğunu düşündüm ...
mavimsi

Yanıtlar:


13

Kullanma crontab -e

crontab -eKök olarak koymam . Bu genellikle diğer yöneticiler için daha az belirgindir ve zamanla kaybolması muhtemeldir. Bunları koymak /etc/crontab, tam olarak çalışmasını istediğiniz zamanı belirtebilir ve farklı bir kullanıcı da belirtebilirsiniz.

Alternatif yerler

Komut dosyasını farklı bir kullanıcı olarak çalıştırmayı umursamıyorsanız ve / veya komut dosyasının haftalık, günlük vb. Olarak çalışmasını istiyorsanız, birkaç dağıtım, komut dosyalarının belirli bir zamanda otomatik olarak işleneceği dizinler sağlar.

Örneğin Redhat tabanlı dağıtımlar altında:

$ ls -dl /etc/cron*
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.d
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.daily
-rw-------. 1 root root    0 Nov 23 07:42 /etc/cron.deny
drwxr-xr-x. 2 root root 4096 Nov 29 11:03 /etc/cron.hourly
drwxr-xr-x. 2 root root 4096 Nov 29 11:06 /etc/cron.monthly
-rw-r--r--. 1 root root  457 Sep 26  2011 /etc/crontab
drwxr-xr-x. 2 root root 4096 Sep 26  2011 /etc/cron.weekly

Ben çoğu kez ben belirli bir zamanda çalıştırmak istediğiniz sistem düzeyi crons koyacağım /etc/cron.dyerine /etc/crontabdaha karmaşık komut dosyaları özellikle eğer.

Ben aşağıdaki dizinleri kullanmayı tercih /etc/cron*çünkü onlar diğer sistem yöneticilerinin bakmak için bilecekleri çok daha açık bir yer ve burada dosyaları rpmve / veya gibi paketleri yükleme yoluyla yönetilebilir apt.

Girişleri koruma

Bahsettiğim dizinlerden herhangi biri, bir paket yöneticisi tarafından yok edilmeyecek komut dosyaları koymak için tasarlanmıştır. Bir crontab girişini korumaktan endişe ediyorsanız, kesinlikle /etc/crontabdosyaya koymam ve /etc/cron*dizinlerden birine uygun bir komut dosyası olarak koymam .


1

# 4 seçerim. Sistem ayarlarının işi ne zaman çalıştıracağını seçmesine izin verir ve genellikle "meşgul olmadığında çalıştır" iyi bir iş yaparlar. Sistem cron zamanlayıcısının değiştirilmesi komut dosyasının çalışma süresini de otomatik olarak etkiler.

Aşağı tarafı, çalıştığında doğrudan kontrolünüz olmamasıdır. Daha fazla doğrudan kontrole ihtiyacınız varsa # 1 kullanın.

1, sistem güncellemesi tarafından üzerine yazılma olasılığı en düşüktür. Yine de 3 ve 4 oldukça güvenli olmalıdır. her şey nasıl güncellediğinize bağlıdır. Dağıtımınız istediği gibi güncellenebilir, ancak yalnızca 2 tanesi genellikle üzerine yazma riski taşır.

Son olarak, komut dosyalarını / usr / local / bin içine koyardım. Distro'nun paket yöneticisi tarafından yönetilmeyen sistem çapında şeyler koyduğum "normal" bir yer. / root / bin de yalnızca root tarafından çalıştırılacaksa kabul edilebilir. Ancak bunların hepsi çoğunlukla lezzetlidir.


0

Yukarıdakilerin herhangi biri çalışacaktır ve yukarıdakilerin hiçbirinin güncellemelerle üzerine yazılmaması gerekir. Asıl seçim düşünülmektedir - üç farklı insanın üç farklı cevabı olmasa bile genellikle en az iki tane olacaktı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.