Wie führe ich einen Cron-Job als Benutzer aus?

142202
morpheous

Ich möchte einen Cron-Job als bestimmten Benutzer auf meinem Computer ausführen. Wie kann ich den Benutzer angeben, für den ein Cron-Job ausgeführt werden soll?

Die Cron-Jobs laufen auf einem Server (auf Ubuntu 10.0.4). Die "Benutzer" sind Benutzer, die speziell für die Ausführung bestimmter serverseitiger Aufgaben erstellt wurden. Diese "Benutzer" haben Folgendes gemeinsam:

  • Anmeldung am System nicht möglich
  • Eingeschränkten Zugriff auf bestimmte Ordner / Dateien
62

4 Antworten auf die Frage

74
Daenyth

Vorausgesetzt, Sie können sich nicht einfach anmelden und zur crontab dieses Benutzers hinzufügen, legen Sie eine Datei ein /etc/cron.d. Es sollte als normaler Cronjob formatiert werden, jedoch mit einem zusätzlichen Feld. Vor dem Befehl zum Ausführen und nach dem Zeitpunkt setzen Sie den Benutzer. Sie sollten bereits Beispiele auf Ihrem System finden können.

Beispiel:

#<timing> <user> <command> 11 * * * * root /usr/lib/command 
Ich denke, das ist die richtige Antwort. Ich muss nach einigen Beispielen suchen und noch mehr untersuchen. morpheous vor 13 Jahren 0
Plus eine von mir, dies ist der beste Weg, um das zu tun, was Sie wollen. Schauen Sie genauer in die Datei / etc / crontab und Sie werden sehen, dass nach der Zeitvorlage und vor dem Befehl dort "root" steht. Das bedeutet, dass "root" diese Befehle ausführt. Fügen Sie einfach Ihren eigenen Zeitplan hinzu und verwenden Sie statt "root" einen beliebigen Benutzer. Beachten Sie außerdem, dass Sie bei Verwendung von Crontabs pro Benutzer (wie von Eric D vorgeschlagen) die Funktionalität der systemweiten Crontab (/ etc / crontab und /etc/cron.d) verlieren können. Patkos Csaba vor 13 Jahren 2
Die bevorzugte Lösung, denke ich, wäre einfach "crontab -u" -e` alles an einem Ort zu halten, was Sie als root tun können. Ich mag es, meine Cron-Jobs nach Funktionen zu gruppieren, und nicht nur nach Benutzern, also ist dies die bevorzugte Lösung für mich. Stuart H vor 6 Jahren 3
39
Eric Darchis

Um als root die cron von user1 zu bearbeiten:

crontab -u user1 -e 

Sie können Ihren Befehl auch starten mit:

su user1 -c foo bar 

Oft reduzieren die Skripts selbst jedoch ihren eigenen Zugriff, wenn sie als root gestartet werden.

0
user220364

Ich habe dies seit ein paar Wochen gesucht und das hat endlich funktioniert ...

Erstellen Sie Ihr Skript als Benutzer1

ssh user1@ipaddress nano hourly-event.sh 

Geben Sie einen Befehl ein

#!/bin/bash echo "YAY it works" > /home/user1/yay.txt 

mache es ausführbar

chmod 755 hourly-event.sh 

Bearbeiten Sie die Crontab für Benutzer1

sudo crontab -u user1 -e 

Füge eine Zeile am unteren Rand ein, die auf deine Skripte zeigt.

# m h dom mon dow command * * * * * bash ./hourly-event.sh 

exit - Speichern von Änderungen (beim Speichern wird ein / tmp-Verzeichnis angezeigt ... es ist in Ordnung)

Warten Sie auf die Minute

Öffnen Sie Ihre neu erstellte Datei yay.txt

nano /home/user1/yay.txt 

Sie sollten jetzt ein Nano-Fenster mit "YAY It Works Works" als erste und einzige Zeile geöffnet haben, wenn der untere Teil Ihres Nano-Fensters "New File" sagt

Sie können Ihren neuen Crontab-Eintrag für user1 auch unter: / var / spool / cron / crontabs / user1 überprüfen

FRIEDEN

0
Siwei Shen申思维

Manchmal möchten Sie, dass der Benutzer seine Umgebung lädt, insbesondere wenn Sie "rbenv", "nvm" verwenden, einfach so:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ... 

(Hier wird der Befehl source ~/.bash_profileIhre Ruby- oder Node-Umgebung laden.