Metainformationen zur Seite
Eigene Cronjobs im Plugin-Code pflegen
Voraussetzungen
Im Plugin-ZIP muss die Datei cron/crontab
enthalten sein. Es ist dabei unerheblich, ob darin bereits ein cron-Job enthalten ist oder nicht.
Das crontab-File wird bei der Installation nach $lbhomedir/system/cron/cron.d/<pluginname>
kopiert. Mit diesem Pfad kann im Plugin dann auch lesend auf die Datei zugegriffen werden, um die aktuellen Cronjobs auszulesen.
Erzeugen von Cron-Einträgen
Aus Sicherheitsgründen ist es dem Plugin nicht möglich, direkt in die Datei $lbhomedir/system/cron/cron.d/<pluginname>
zu schreiben.
Zum Erzeugen eines neuen crontab-Files während der Laufzeit muss
- ein temporäres Crontab-File erzeugt werden (z.B. in /tmp/) und
- mit
sudo $lbhomedir/sbin/installcrontab.sh <pluginname> <crontabfile>
das neue File installiert werden.
Das Crontab-File enthält den ausführenden Benutzer (siehe unten), der von der installcrontab
-Routine jedoch immer mit loxberry
ersetzt wird. Cronjobs können daher nicht direkt mit root ausgeführt werden.
Wenn es notwendig ist, dass ein Script aus einem Cronjob als root ausgeführt wird, muss das aufgerufene Script im sudoers
-File vorhanden sein (Plugin-Interface V2). Aus dem Cronjob muss dieses mit sudo
aufgerufen werden.
Syntax
Achtung, die Syntax für Cronjobs enthält den User, die Syntax ist:
minute hour day_of_month month day_of_week user command
Als "User" muss loxberry
verwendet werden.
Beispiel
#minute hour day_of_month month day_of_week user command 0 */6 * * * loxberry $LBPCGI/meinplugin/machwas.sh
Das Plugin ist für die Pflege des Files selbst verantwortlich. Das Schreiben des Files muss immer, wie oben beschrieben, über eine temporäre Datei und der Prozedur installcrontab.sh
erfolgen.
Bei einem Update des Plugins wird das Crontab-File nicht gelöscht.
Beim Deinstallieren des Plugins wird die Datei gelöscht.
Perl
Zur Pflege des Crontab-Files kann das Modul Config::Crontab verwendet werden.
use Config::Crontab; my $cron = new Config::Crontab; $cron->system(1); ## Wichtig, damit der User im File berücksichtigt wird $cron->read( -file => "$lbhomedir/system/cron/cron.d/$lbpplugindir" );
Manuell
Ein hilfreicher Link ist der Online-Crontab-Generator unter: https://crontab-generator.org/
Achtung! Der Online-Generator fügt den notwendigen Benutzernamen nicht vor das Kommando in die Syntax ein. Diesen musst Du manuell hinzufügen (siehe oben!).