Jeśli potrzebuję cronjob, który działa na poziomie systemu (tj. Nie jest specyficzny dla określonego użytkownika), jak sugerujesz mi go utworzyć?
- działający
crontab -e
jako root - dołączając do
/etc/crontab
- tworzenie pliku definiującego cronjob
/etc/cron.d/
- utworzenie pliku definiującego cronjob
/etc/cron.*ly/
(ale tylko jeśli taki przedział czasu odpowiada moim potrzebom)
Najbardziej martwi mnie to, które z tych rozwiązań zostaną prawdopodobnie zastąpione przez aktualizację systemu ?
Dodatkowo myślę, że jeśli zadanie jest długie, powinienem umieścić go w osobnym pliku skryptu , na przykład w /root/bin/
. Czy sie zgadzasz?
Odpowiedzi:
Nie używaj
crontab -e
Nie umieściłbym tego
crontab -e
jako root. Jest to ogólnie mniej oczywiste dla innych administratorów i z czasem może się zgubić. Umieszczając je/etc/crontab
, możesz dokładnie określić czas, w którym chcesz je uruchomić, a także możesz określić innego użytkownika.Alternatywne lokalizacje
Jeśli nie zależy ci na uruchamianiu skryptu jako inny użytkownik i / lub chcesz, aby skrypt był uruchamiany co tydzień, codziennie itp., To kilka dystrybucji udostępnia katalogi, w których można umieścić skrypty, które będą automatycznie przetwarzane w określonym czasie.
Na przykład pod dystrybucjami opartymi na Redhat:
Często umieszczam crony na poziomie systemu, w których chcę uruchomić w określonym czasie
/etc/cron.d
zamiast/etc/crontab
, szczególnie jeśli są to bardziej złożone skrypty.Wolę używać katalogów poniżej,
/etc/cron*
ponieważ są one o wiele bardziej oczywistym miejscem, o którym inni administratorzy systemu będą wiedzieć, a plikami tutaj można zarządzać za pomocą instalacji pakietów, takich jakrpm
i / lubapt
.Ochrona wpisów
Dowolne z wymienionych przeze mnie katalogów są przeznaczone do umieszczania skryptów, które nie zostaną zniszczone przez menedżera pakietów. Jeśli martwisz się ochroną wpisu crontab, to na pewno nie umieściłbym go w
/etc/crontab
pliku, a zamiast tego umieściłbym go jako odpowiedni skrypt w jednym z/etc/cron*
katalogów.źródło
Wybrałbym # 4. Pozwala to ustawieniom systemu wybrać, kiedy ma zostać uruchomione zadanie, i zazwyczaj wykonują dobrą pracę „uruchom, gdy nie jest zajęty”. Zmiana systemowego harmonogramu cron również automatycznie wpłynie na czas działania skryptu.
Wadą jest to, że nie masz bezpośredniej kontroli nad działaniem. Jeśli potrzebujesz bardziej bezpośredniej kontroli, użyj # 1.
1 jest najmniej prawdopodobne, że zostanie zastąpiony przez aktualizację systemu. Chociaż 3 i 4 powinny być całkiem bezpieczne. wszystko zależy jednak od sposobu aktualizacji. Twoja dystrybucja może być aktualizowana w dowolny sposób, ale tylko 2 zwykle grozi zastąpienie.
Wreszcie, umieściłbym skrypty w / usr / local / bin To jest „normalne” miejsce, w którym umieszczam rzeczy systemowe, które nie są zarządzane przez menedżera pakietów dystrybucji. / root / bin jest również dopuszczalny, jeśli będzie uruchamiany tylko przez root. Jednak to wszystko głównie smak.
źródło
Każde z powyższych będzie działać i żadne z powyższych nie powinno zostać zastąpione przez aktualizacje. Rzeczywisty wybór sprowadza się do opinii - dowolne trzy różne osoby często mają co najmniej dwie, jeśli nie trzy różne odpowiedzi.
źródło