Konfiguruję regularne zadania konserwacji systemu, które muszą być uruchamiane jako root. Planuję użyć smaku crona, który jest domyślnie wyposażony w Ubuntu 14.04 LTS.
Widzę, że poprzedni administrator (który odszedł z firmy) bezpośrednio edytował / etc / crontab. Rozumiem jednak, że innym możliwym podejściem byłoby użycie crontab -e
jako root. Czy są jakieś przekonujące argumenty przemawiające za jednym lub drugim, czy zależy to od preferencji?
linux
cron
ubuntu-14.04
marcv81
źródło
źródło
Odpowiedzi:
Warto zauważyć, że zadania w osobistym crontab (
crontab -e
) są zawsze wykonywane jako ich właściciele, w których/etc/crontab
znajduje się dodatkowe<user>
pole obowiązkowe pozwalające administratorowi skonfigurować zadanie do uruchamiania jako użytkownik inny niż root.Edycja systemowego pliku crontab lub konfiguracja osobistego pliku crontab dla roota jest prawdopodobnie nieco bardziej przenośna, nie jest specyficzna dla niektórych dystrybucji Linuksa i jest prawdopodobnie wygodniejsza w utrzymaniu, z wszystkimi zadaniami w jednym pliku, ale:
Osobiście preferuję trzecią opcję : dla każdego zaplanowanego zadania upuść albo
/etc/cron.d/
z fragmentem crona/etc/cron.[hourly |daily |weekly |monthly]
katalogu.Jest to łatwiejsze do skryptu (możesz po prostu tworzyć / nadpisywać / usuwać takie pliki i nie musisz grzebać w zawartości pojedynczego pliku crontab) i działa dobrze z narzędziami do zarządzania konfiguracją i to właśnie menedżerowie pakietów już są i tak robić.
Zadania / skrypty
/etc/cron.[hourly |daily |weekly |monthly]
są zawsze wykonywane jako root, gdzie fragmenty crona/etc/cron.d/
umożliwiają zarówno ustawienie niestandardowego harmonogramu, jak i uruchamianie jako inny użytkownik z tym samym obowiązkowym<user>
polem znalezionym w/etc/crontab
.źródło
/etc/crontab
jest to, że scalanie będzie wymagane przy każdej aktualizacjicron
pakietu. Nie masz tego problemu, jeśli po prostu dodasz nowy plik do jednego z/etc/cron.*
katalogów./etc/cron.[hourly |daily |weekly |monthly]
zawiera pliki wykonywalne, podczas gdy/etc/cron.d
zawiera pliki crontab. Poza tym +1.Jak najlepiej pamiętam,
crontab -e
ma tę dodatkową zaletę, że weryfikuje składnię crontab przed jej zainstalowaniem, a jeśli popełni błąd, popełni błąd i przywróci poprzednie. W ten sposób wszystko, co wcześniej działało, nie zatrzyma się nagle, jeśli źle zrozumiesz składnię. Myślę, że najlepszą praktyką jest używanie narzędzi, takich jak uruchamianie,visudo
a nie edycja/etc/sudoers
bezpośrednio.źródło
/etc/crontab
wiersz z nazwą użytkownika w szóstej kolumnie). - Chociaż chciałbym argumentować, że używanie interaktywnych narzędzi nie jest „najlepszą praktyką” , powinieneś zautomatyzować za pomocą narzędzi takich jak Puppet / Salt / Ansible itp. I nie powinieneś już konfigurować serwerów ręcznie. Z drugiej strony, jeśli jesteś oldschoolowy, to rzeczywiście używaj swoich narzędzi.To naprawdę stylowe pytanie, istnieje powód, dla którego system operacyjny oferuje wiele metod. Po prostu bądź konsekwentny i nie mieszaj i nie dopasowuj, jeśli nie chcesz mylić nikogo (lub siebie po pewnym czasie braku kontaktu z systemem) - jeśli trudno jest zobaczyć, jakie zadania są faktycznie zaplanowane na całym hoście, zwykle kończyć się paskudnymi niespodziankami.
źródło
Aby mieć pewność dodania zadania cron wymagającego uprawnień określonego użytkownika, osobiście używam następującego polecenia:
Możesz
sudo
też dodać .Jak stwierdził @rackandboneman, nie ma potrzeby mieszania się z plikami /etc/cron.d/. Jeśli chodzi o zadania crona użytkownika, użyj funkcji
crontab
polecenia.źródło