Mehrere Crontabs für einen Benutzer

13

Gibt es eine Möglichkeit, mehrere Crontab-Dateien für einen Benutzer zu verwenden? Denken Sie etwas in der Art einer Crontab-Datei pro Projekt anstelle von Crontab pro Benutzer ...

Jede Hilfe wird geschätzt ...

Realshadow
quelle

Antworten:

13

Im Allgemeinen ist es eine gute Idee, Ihre Crontab ohnehin in einer separaten Datei zu verwalten und mit zu installieren crontab filename. (Ich behalte meine Crontab-Datei in einem Versionsverwaltungssystem.)

Sie können mehrere Crontab-Dateien haben und alle mit installieren

cat file1 file2 file3 | crontab

Der crontabBefehl verwaltet normalerweise nur eine einzige Crontab pro Benutzer. Sie können dem /etc/cron.dVerzeichnis jedoch System-Crontab-Dateien hinzufügen . Diese Dateien haben nach der Zeitangabe ein zusätzliches Feld, das den Benutzer für den Job angibt, und Sie können mehrere Dateien pro Benutzer haben. Selbst wenn einer von ihnen einen Syntaxfehler aufweist, werden die anderen dennoch ausgeführt.

Sie benötigen Root-Zugriff, um Dateien in diesem Verzeichnis zu installieren.

man 5 crontab für Details.

Ich bin nicht davon überzeugt, dass es eine gute Idee ist, den normalen Crontab-Mechanismus wie diesen zu umgehen, aber es sollte funktionieren.

(Dies setzt die Implementierung von "Vixie Cron" voraus, die wahrscheinlich von Ihrem System verwendet wird.)

HINWEIS: Sie könnten versucht sein, es zu versuchen

crontab file1 file2 file3 # WRONG

Ein kurzes Experiment zeigt jedoch, dass alle Dateinamen außer dem ersten stillschweigend ignoriert werden. Die Manpage sagt, dass ein einzelner Dateiname akzeptiert wird, sagt aber nicht, was passiert, wenn mehrere Dateinamen angegeben werden.

Keith Thompson
quelle
Das habe ich heute gemacht. Das wäre einfach, aber das Ziel dabei ist, dass jeder Projekt- "Manager" die Kontrolle über seine eigene Crontab hat. Mit diesem Ansatz müsste es jedes Mal so kombiniert werden, wenn jemand eine der Dateien ändert, was bedeutet, dass er alle Dateien verfolgen muss, die kompiliert werden müssen
1
Erstellen Sie also ein Programm (oder ein Skript oder was auch immer), um es zu automatisieren. Beachten Sie, dass Sie den crontabBefehl über einen Crontab-Eintrag aufrufen können .
Keith Thompson
1
@MateuszKonieczny: Das ist ein guter Grund, aber es ist auch zu einfach, deine Crontab versehentlich zu löschen. crontabohne argumente liest eine neue crontab von stdin.
Keith Thompson
1
@MateuszKonieczny: Nein, ich behalte es einfach in einem CVS-Repo und kopiere es, $HOMEwenn ich es aktualisiere. (Ich benutze CVS, weil Git nicht existierte, als ich damit anfing.)
Keith Thompson
1
@ KeithThompson Oh, gotcha! Ich erstelle ein Dokument, mit dem Benutzer Fedora Core 24 ohne Evolution oder Gnome von Grund auf ausführen können: github.com/barrycarter/bcapps/blob/master/FEDORA und wollte einen Teil meiner Cron-Datei freigeben, aber nicht alles. Ihre Lösung (Erstellen von bc-public-cron im GIT-Verzeichnis und von bc-private-cron außerhalb davon) passt gut zur Rechnung.
Barrycarter
4

Warum würdest du das tun? Sie könnten in crontab mehrere Zeilen verwenden - ich denke, das würde auch den Job machen.

Es gibt auch die Verzeichnisse, die Sie wahrscheinlich verwenden könnten:

cron.d/
cron.daily/
cron.hourly/
cron.monthly/
cron.weekly/
Gaff
quelle
So ist es jetzt :) Ich würde nur gerne wissen, ob es einen Weg gibt, dies zu tun