Ich muss täglich ein Skript ausführen. Das Skript sollte als bestimmter Benutzer (z. B. Benutzer1) und nicht als Root ausgeführt werden. Also habe ich die Cron-Datei unter /etc/cron.d abgelegt und den Benutzernamen in die Zeile (2. Spalte) eingetragen. Es wird jedoch ein Fehler ausgegeben, der besagt, dass der Befehl nicht gefunden wurde. Ich vermute, dass das Skript nicht als Umgebung von Benutzer1 ausgeführt wurde. Habe ich etwas verpasst?
18
Antworten:
Nur
/etc/crontab
und die Dateien in/etc/cron.d/
haben ein Benutzername-Feld. In dieser Datei können Sie dies tun:Von der Wurzel-Crontab können
sudo crontab -e
Sie verwenden:Oder Sie können die aktuelle Crontab des Benutzers wie folgt verwenden:
Die zweite Spalte in einer crontab-Datei gibt die Stunde an, zu der der Job ausgeführt werden soll. Meinten Sie das sechste Feld?
quelle
/etc/cron.d/
Dateien sind Teil von/etc/crontab
.sudo
ist auch sinnlos. Ich werde diesen Teil entfernen.sudo su...
ist im Allgemeinen nicht erforderlich;sudo -u <user> <command>
ist in der Regel ausreichend. (b) sudo drosselt auf einigen Systemen, wenn kein TTY angeschlossen ist (z. B. wenn es von cron ausgeführt wird). Das kann in Ihrer sudoers-Datei behoben werden.Möglicherweise müssen Sie den Pfad für diesen Benutzer festlegen, wenn sich die von Ihnen verwendete ausführbare Datei beispielsweise in / usr / local / bin befindet. Um den PATH zu setzen, stellen Sie den Cronjobs etwas vor:
Die andere Möglichkeit besteht darin, den Pfad zu sample_executable in Ihrem Cronjob vollständig anzugeben.
Wenn sample_executable auf die ausführbaren Dateien verweist, die nicht im Standardpfad enthalten sind, sollten Sie die erste Option verwenden.
quelle
Das typische Verzeichnis für Benutzer crontabs befindet sich in / var / spool / cron / crontabs. Das Dateiformat enthält keinen Benutzernamen. Benutzer-Crontabs gehören dem Benutzer und werden im Modus 0600 nach dem Benutzer benannt. Dies geschieht am besten, indem Sie Ihre Tab-Datei schreiben und die
crontab -u username filename
gewünschten Cron-Einträge für diesen Benutzer einrichten .quelle