Wiele crontabs dla jednego użytkownika

13

czy istnieje sposób na użycie wielu plików crontab dla jednego użytkownika? Myślenie coś w stylu pliku crontab na projekt zamiast crontab na użytkownika ...

Każda pomoc jest doceniana ...

realshadow
źródło

Odpowiedzi:

13

Ogólnie dobrze jest zachować crontab w osobnym pliku i zainstalować go crontab filename. (Trzymam mój plik crontab w systemie kontroli źródła.)

Możesz mieć wiele plików crontab i zainstalować je wszystkie za pomocą

cat file1 file2 file3 | crontab

crontabKomenda normalnie zarządza tylko jeden crontab na użytkownika. Ale możesz dodać systemowe pliki crontab do /etc/cron.dkatalogu. Pliki te mają dodatkowe pole po specyfikacji czasu, które wskazuje użytkownika dla zadania, i możesz mieć wiele plików na użytkownika. Nawet jeśli jeden z nich ma błąd składniowy, pozostałe nadal będą działać.

Będziesz potrzebował dostępu do konta root, aby zainstalować pliki w tym katalogu.

man 5 crontab dla szczegółów.

Nie jestem przekonany, że obejście takiego normalnego mechanizmu crontab jest dobrym pomysłem, ale powinno działać.

(Zakłada się to implementację „Vixie Cron”, prawdopodobnie używaną przez system.)

UWAGA: Możesz mieć ochotę spróbować

crontab file1 file2 file3 # WRONG

ale szybki eksperyment pokazuje, że wszystkie nazwy plików oprócz pierwszego są po cichu ignorowane. Strona podręcznika mówi, że pojedyncza nazwa pliku jest akceptowana, ale nie mówi, co się stanie, jeśli podano wiele nazw plików.

Keith Thompson
źródło
Zrobiłem to dzisiaj. Byłoby to łatwe, ale celem tego jest to, aby każdy „kierownik” projektu miał kontrolę nad własnym crontabem. Dzięki takiemu podejściu musiałby być łączony w ten sposób za każdym razem, gdy ktoś zmienia jeden z plików, co oznacza, że ​​będzie musiał śledzić wszystkie pliki, które muszą zostać skompilowane
1
Stwórz więc program (lub skrypt lub cokolwiek), aby go zautomatyzować. Zauważ, że możesz wywołać crontabpolecenie z pozycji crontab.
Keith Thompson
1
@MateuszKonieczny: To dobry powód, ale łatwo jest też przypadkowo skasować swój crontab. crontabbez argumentów czyta nowy crontab ze standardowego wejścia.
Keith Thompson
1
@MateuszKonieczny: Nie, po prostu trzymam go w repozytorium CVS i kopiuję do niego, $HOMEkiedy go aktualizuję. (Używam CVS, ponieważ Git nie istniał, kiedy zacząłem to robić.)
Keith Thompson
1
@KeithThompson Oh, gotcha! Tworzę dokument, aby pomóc ludziom uruchomić Fedorę Core 24 od zera bez ewolucji lub gnome: github.com/barrycarter/bcapps/blob/master/FEDORA i chciałem udostępnić część mojego pliku cron, ale nie całość. Twoje rozwiązanie (tworzenie bc-public-cron w katalogu GIT i bc-private-cron poza nim) dobrze pasuje do rachunku.
barrycarter
4

Dlaczego chcesz to zrobić? Możesz użyć wielu linii w crontabie - myślę, że to też by zadziałało.

Istnieją również katalogi, których prawdopodobnie możesz użyć:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
Gafel
źródło
Tak to jest teraz :) Chciałbym tylko wiedzieć, czy jest na to sposób