Ich möchte einen Cron-Job als bestimmter Benutzer auf meinem Computer ausführen. Wie kann ich den Benutzer angeben, unter dem ein Cron-Job ausgeführt werden soll?.
Die Cron-Jobs werden auf einem Server ausgeführt (unter 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:
Angenommen, Sie können sich nicht einfach anmelden und zur crontab dieses Benutzers hinzufügen, fügen Sie eine Datei in /etc/cron.d
ein. Es sollte wie ein normaler Cronjob formatiert sein, aber mit einem zusätzlichen Feld. Setzen Sie den Benutzer vor dem auszuführenden Befehl und nach dem Timing. Sie sollten in der Lage sein, bereits Beispiele auf Ihrem System zu finden.
Beispiel:
#<timing> <user> <command>
11 * * * * root /usr/lib/command
Als root, um den cron von user1 zu bearbeiten:
crontab -u user1 -e
Sie können Ihren Befehl auch starten mit:
su user1 -c foo bar
Aber oft reduzieren die Skripte selbst ihren eigenen Zugriff, wenn sie als root gestartet werden.
Ich habe ein paar Wochen danach gesucht und das hat endlich funktioniert ...
Erstellen Sie Ihr Skript als Benutzer1
ssh [email protected]
nano hourly-event.sh
geben Sie einen Befehl ein
#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt
mach es ausführbar
chmod 755 hourly-event.sh
bearbeiten Sie die crontab für user1
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 - Änderungen speichern (beim Speichern wird ein/tmp-Verzeichnis angezeigt ... es ist in Ordnung)
warten Sie auf die Wende der Minute
öffne deine neu erstellte yay.txt
nano /home/user1/yay.txt
sie sollten jetzt ein Nano-Fenster mit "YAY it works" als erste und einzige Zeile geöffnet haben, wenn am unteren Rand Ihres Nano-Fensters "New File" (Neue Datei) angezeigt wird
sie können auch Ihren neuen crontab-Eintrag für Benutzer1 unter/var/spool/cron/crontabs/Benutzer1 überprüfen
FRIEDEN
Manchmal möchten Sie vielleicht, dass der Benutzer seine Umgebung lädt, besonders wenn Sie "rbenv", "nvm" wie folgt verwenden:
0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec Ruby ...
(hier lädt der Befehl source ~/.bash_profile
die Ruby- oder Node-Umgebung.