Datei in crontab config aufnehmen?

8

Ich versuche, die projektspezifische crontab-Konfiguration in das Code-Repository zu integrieren, um das Aktualisieren von cron-Jobs auf allen Backends bei der Bereitstellung zu vereinfachen.

Ist es möglich, Dateien in die crontab-Konfiguration aufzunehmen? Etwas wie

* * * * * execsomething /blablabla/blah/
* * * * * onemore /blablabla
@include '/home/user/project/crontab.conf'
Kirzilla
quelle

Antworten:

8

Abhängig von Ihrem Cron-Daemon und Ihrer Distribution sollten sich in / etc mehrere Verzeichnisse befinden, in denen Sie Dateien mit Jobs für Cron ablegen können.

Skripte (keine Cron-formatierten Jobs), die in den folgenden Verzeichnissen abgelegt werden, werden in den angegebenen Intervallen ausgeführt. Beachten Sie, dass die Frequenz garantiert ist, die genaue Laufzeit jedoch möglicherweise nicht. Für die meisten Benutzer sind diese Verzeichnisse ausreichend:

/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

Cron-formatierte Jobs (wie in den obigen Beispielen), die im folgenden Verzeichnis abgelegt werden, werden von Cron zu den angegebenen Zeiten ausgeführt. Beachten Sie, dass zusätzlich zu den normalen Einträgen vor dem Befehl auch der Benutzer des Jobs angegeben werden muss. Für Pakete und Software-Distributionen ist diese Methode der beste Weg, um Cronjobs zu verteilen:

/etc/cron.d

Beispiel für einen cron.d-formatierten Befehl:

1 1 * * * root echo "serverfault is awesome" > /dev/null
Boscoe
quelle
Kann der Benutzername eine Variable sein? Ich habe eine Reihe von Befehlen, die als derselbe Benutzer ausgeführt werden müssen, aber möglicherweise in verschiedenen Umgebungen ein anderer Benutzer sind. Kann ich so etwas wie $ USER = joeblow 1 1 * * * $ USER echo "serverfault is awesome"> / dev / null
Jay K
Kommt auf den Cron-Daemon an. cronie erlaubt zum Beispiel keine Umgebungsvariablen.
Boscoe
4

Soweit ich weiß, nicht; dafür /etc/cron.dist es da.

Wie Boscoe hervorgehoben hat, gibt es auch die /etc/cron.{hourly,daily,weekly,monthly}Verzeichnisse, aber Jobs darin können nur als root ausgeführt werden (es sei denn, Sie verwenden sie explizit /bin/suzum Ändern der EUID). Jobs in /etc/cron.dhaben ein zusätzliches Feld, das den Benutzer angibt, als den sie ausgeführt werden, und die Art und Weise, wie Ihre Frage einen /home/userPfad enthält, lässt mich glauben, dass diese Jobs als beliebige Benutzer ausgeführt werden können.

MadHatter
quelle