Cron Tab als bestimmter Benutzer und virtuelle Python-Umgebung

Cron Tab als bestimmter Benutzer und virtuelle Python-Umgebung

Ich möchte einen stündlichen Cron-Job als bestimmter Benutzer (xfeautomation) und in einer virtuellen Python-Umgebung ausführen. Muss ich den Skriptspeicherort in PATH hinzufügen, wenn ich ihn als bestimmter Benutzer ausführe? Mein aktueller Cron-Job sieht folgendermaßen aus:

0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Ist das der richtige oder optimale Weg? TIA

Antwort1

zu diesem Benutzer wechseln.

sudo su - xfeautomation

Laufen

crontab -e

Es erscheint ein Dateieditor mit einer leeren Datei. Fügen Sie dort Ihren Job ohne Benutzernamen hinzu und speichern Sie ihn.

0 * * * * /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Überprüfung:

sudo su - xfeautomation crontab -l

ODER

sudo crontab -u xfeautomation

Antwort2

Muss ich den Skriptspeicherort zu PATH hinzufügen, wenn ich es als bestimmter Benutzer ausführe?

Normalerweise müssen Sie die Umgebungsvariable PATH nicht ändern, wenn Sie absolute Pfade verwenden, wie Sie es jetzt tun mit/opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt

Als Systemadministrator haben Sie mehrere Möglichkeiten, zeitgesteuerte Batch-Jobs zu erstellen, die unter einer anderen Benutzerkennung ausgeführt werden:

  1. Wie indiese Antwort:Richten Sie eine persönliche Crontab für diesen Benutzer ein. Jobs in einer persönlichen Crontab werden immer unter der Benutzer-ID ihres Besitzers ausgeführt.
    Beachten Sie, dass, wenn Sie als Administrator eine persönliche Crontab für einen anderen Benutzer einrichten, dieser Benutzer diese Cron-Job-Spezifikation ändern und löschen kann, wodurch Ihre Arbeit rückgängig gemacht wird.

  2. Alternativ können SiePlanen Sie einen Systemjob aus der System-Crontab. Die System-Crontab (normalerweise /etc/crontabund/oder Drop-In-Dateien in /etc/cron.d/) gehört root und kann von nicht privilegierten Benutzern nicht geändert werden. Die Job-Spezifikation in der System-Crontab unterstützt ein zusätzliches Feld, das in persönlichen Crontab-Dateien nicht vorhanden ist: Feld Nr. 6 benötigt einen Benutzernamen, z. B. xfeautomationdie Benutzer-ID, die zum Ausführen des Jobs verwendet wird.
    Die von Ihnen angegebene Syntax ist korrekt für einen Eintrag in /etc/crontaboder eine Drop-In-Datei wie/etc/cron.d/wf_api_linux

    0 * * * *  xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
    

Da Sie alle Ausgaben und Fehler protokollieren, besteht kein Grund zur Sorge, aber normalerweise sendet Cron Standardausgaben und Fehler per E-Mail an Root, wenn Sie eine System-Crontab einrichten, und direkt an den Benutzer, wenn Sie eine persönliche Crontab verwenden.

Soweit ich weiß, führen beide Methoden tatsächlich zu den gleichen Bedingungen für den Job und sind, abgesehen von den Bedenken hinsichtlich des Eigentums an der Stellenbeschreibung und den E-Mails, gleichwertig.

verwandte Informationen