Meine LAMPE ist so eingerichtet, dass sie funktioniert, user:www-data
und alle Dateien und Ordner werden mit diesen Berechtigungen erstellt.
Ich habe für Crontab als Benutzer @ Ubuntu eingerichtet.
Also mache ich crontab -e
und benutze diesen Befehl:
*/5 * * * * php /var/www/public/voto_m/artisan top >/dev/null 2>&1
Grundsätzlich erstellt dieser Befehl nur eine Cache-Datei an der angegebenen Stelle (keine Probleme damit), aber diese Cache-Datei wird mit Benutzerberechtigungen und nicht mit user:www-data
Berechtigungen erstellt.
Wie kann ich dafür sorgen, dass standardmäßig Dateien mit user:www-data
Berechtigungen erstellt werden?
Ich kann nicht gehen und chown
jedes Mal wird die Datei neu erstellt.
Vielen Dank.
awstats
oderphp5
sessionclean), sich in/etc/cron.*
Verzeichnissen befinden und daher nicht sichtbar sindcrontab -e
(auch wenn Sie WWW-Daten des Benutzers angeben ).Antworten:
Sie können Ihren Eintrag in die crontab des Systems schreiben, in der
/etc/crontab
ein zusätzliches Argument angegeben ist, unter dem der Benutzer ausgeführt werden soll (normalerweise root, kann aber www-data sein).Ihre Zeile würde werden:
Oder Sie können die Crontab der Benutzer-WWW-Daten bearbeiten mit
su
:quelle
/etc/cron.d
mit einem beschreibenden Namen, zB ,/etc/cron.d/artisan
.sudo su -c "crontab -e" www-data -s /bin/bash
Sie können crontab auch mit dem
-u
Argument ausführen , um eine crontab für einen bestimmten Benutzer zu bearbeiten:quelle
Um eine Crontab als Benutzer-WWW-Daten auszuführen, können Sie den folgenden Befehl verwenden:
Dann schreiben Sie eine Zeile, um beispielsweise alle 15 Minuten eine PHP-Datei auszuführen:
Beim Speichern werden Sie vom Redakteur gefragt:
Speichern Sie es dort, keine Sorge.
crontab -e
öffnet eine Datei in / tmp anstelle der eigentlichen Crontab, damit diese Ihre neue Crontab auf Fehler überprüft und Sie daran hindert, Ihre eigentliche Crontab mit diesen Fehlern zu überschreiben. Wenn keine Fehler vorliegen, wird Ihre aktuelle Crontab aktualisiert. Wenn crontab -e nur direkt an Ihre eigentliche crontab schrieb, würden Sie riskieren, Ihre gesamte crontab wegzublasen.Um zu überprüfen, ob Ihr Cronjob ausgeführt wird, können Sie die Cron-Protokolle überprüfen. in der Regel in /var/log/cron.log oder durch Ausführen des folgenden Befehls:
quelle
Ich möchte einen anderen Ansatz hinzufügen. Wie bereits erwähnt, scheinen Ubuntu (16.04 hier) und www-data crontab unzuverlässig zu sein (vielleicht ist es eine Sicherheitssache?).
In unserem Unternehmen möchten wir jedenfalls, dass alle Cronjobs auf einem Server leicht zugänglich sind, damit Sie nichts verpassen. Gleichzeitig wollen wir nicht alles (wirklich alles!) Als root ausführen.
Deshalb rennen wir
Wie Sie es normalerweise tun, geben wir den Befehl als an
Dies führt / path / to / command als www-Daten aus, während der Cronjob in der root-Cronjobs-Datei bleibt (und dies wird immer korrekt ausgeführt). Es hat den schönen Vorteil, die Logfiles als root (für maximale Sicherheit) mit Pipes schreiben zu können.
Beachten Sie, dass wir unsere bevorzugte Shell übergeben, dies könnte auch / bin / sh für eine einfachere Shell sein (wir mögen nur die vollen Bash-Fähigkeiten). Für Www-data wurde keine Shell angegeben, sodass Sie ohne diese Shell Fehler erhalten. Normalerweise führt cron Jobs nur mit / bin / sh aus.
quelle