GNU/Linux >> Znalost Linux >  >> Linux

Mám upravit /etc/crontab nebo spustit crontab -e jako root?

Řešení 1:

Může být užitečné poznamenat, že úlohy v osobním crontab (crontab -e ) jsou vždy spuštěny jako jejich vlastník, kde /etc/crontab obsahuje další povinné <user> pole umožňující administrátorovi nakonfigurovat úlohu tak, aby se spouštěla ​​jako uživatel bez oprávnění root.

Úpravy systémového crontab nebo nastavení osobního crontab pro root jsou pravděpodobně o něco přenosnější, nejsou specifické pro určité distribuce Linuxu a pravděpodobně jsou pro člověka pohodlnější udržovat se všemi úlohami v jednom souboru, ale:

Osobně upřednostňuji třetí možnost :pro každou naplánovanou úlohu přetáhněte buď

  • soubor ve formátu /etc/cron.d/ s úryvkem cron
  • spustitelný soubor (skript) v příslušném /etc/cron.[hourly |daily |weekly |monthly] adresář.

To se snadněji skriptuje (takové soubory můžete jednoduše vytvářet/přepisovat/mazat a nemusíte se hrabat v obsahu jednoho souboru crontab) a dobře to funguje s nástroji pro správu konfigurace a to už správci balíčků jsou. dělat stejně.

Úlohy/skripty v /etc/cron.[hourly |daily |weekly |monthly] jsou vždy spuštěny jako root, kde se cron fragmenty v /etc/cron.d/ umožňují nastavení vlastního plánu i spuštění jako jiný uživatel se stejným povinným <user> pole nalezené v /etc/crontab .

Řešení 2:

Jak si nejlépe pamatuji, crontab -e má další výhodu, že před instalací ověřuje syntaxi crontab a pokud uděláte chybu, dojde k chybě a obnoví předchozí. Tímto způsobem se nic, co dříve fungovalo, náhle nezastaví, pokud se popletete v syntaxi. Myslím, že nejlepší praxí je používat nástroje, jako je spuštění visudo místo úpravy /etc/sudoers přímo.

Řešení 3:

Je to opravdu otázka stylu, existuje důvod, proč OS nabízí více metod. Buďte důslední a nemíchejte a nekombinujte, pokud nechcete zmást nikoho jiného (nebo sebe po nějaké době, kdy se systémem nezabýváte) - pokud je těžké vidět, jaké úkoly jsou skutečně naplánovány napříč celým hostitelem, má to tendenci skončí ošklivým překvapením.

Řešení 4:

Abychom měli jistotu pro přidání úlohy cron, která vyžaduje práva konkrétního uživatele, osobně používám následující příkaz:

 # crontab -u <user> -e

Můžete přidat sudo taky.

Jak uvedl @rackandboneman, není třeba se zahrávat se soubory /etc/cron.d/. Pokud jde o úlohy cron uživatele, použijte funkce crontab příkaz.


Linux
  1. Jak se aktualizuje /etc/motd?

  2. Jak zabránit uživateli bez oprávnění root ve vytváření záznamu crontab

  3. Uživatel nemůže upravit crontab, chyba:„/tmp/crontab.Lm34gsJV:Permission denied“

  1. Spustit příkaz shell v jenkins jako uživatel root?

  2. Rozdíl mezi /etc/crontab a crontab -e

  3. unix:///var/run/supervisor.sock žádný takový soubor

  1. /etc/passwd zobrazuje uživatele ve skupině, ale /etc/group nikoli

  2. /etc/shadow na Macu

  3. Rozdíl mezi /etc/hosts a /etc/resolv.conf