Ich verwende Debian. Ich versuche, einen Cron-Job für youtube-dl zu erstellen. Er besteht aus einem täglichen Skript, das um Mitternacht beginnt. Wenn ich das Skript manuell ausführe, funktioniert alles einwandfrei. Wenn ich jedoch den Cron-Job verwende, erhalte ich einen Fehler wie diesen:
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
Der Cron ist der folgende:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1
Ich verstehe, dass es irgendwo ein Berechtigungsproblem gibt, aber ich weiß nicht, wie ich es lösen kann.
Zu Ihrer Information :
- Besitzer/Gruppe des Zielordners (
/media/Video/
) ist:www-data
(Besitzer),wwww-data
(Gruppe) - Besitzer/Gruppe des Skripts ist:
nextcloud
(Besitzer),root
(Gruppe) nextcloud
undroot
gehöre zur Gruppewww-data
- und die Berechtigung für den Zielordner (
/media/Video/
) lautet770
(Besitzer/Gruppe kann lesen/schreiben/ausführen, andere können nichts tun).
Können Sie mir bitte helfen? Ich habe ein ähnliches Thema gesehen, aber die Lösung war nicht erfolgreich, da das Problem nicht genau dasselbe war. Vielen Dank.
EDIT (alter Stand) :bisher habe ich versucht, mein Skript ( youtube-dl-script.sh
) in /etc/crontab.daily
den Ordner zu kopieren, indem ich die Regeln beachtet habe (die .sh
Erweiterung und das Skript entfernt habe, das der root
/-Gruppe gehört root
). Und die Überprüfung mit cat /etc/crontab
gibt mir diese Ausgabe:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Normalerweise hätte es heute Morgen um 6:25 Uhr funktionieren sollen, aber das tat es nicht!
Ich habe festgestellt, dass andere Skripte -x
als letztes Bit haben, deshalb habe ich Folgendes erstellt chmod +x youtube-dl-script
.
Davor ist das Skript
-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.Jetzt ist es
-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.
Jetzt muss ich bis morgen 6:25 Uhr warten, um zu sehen, ob es funktioniert.
BEARBEITEN 2 (aktueller Status): also es funktioniert nicht. Ich habe es sogar chmod 755
so eingerichtet, dass es die gleichen Berechtigungen hat wie alle anderen Skripte, und ich habe den Server neu gestartet, aber es funktioniert nicht.
Was sehr seltsam ist, ist, dass, wenn ich das tue run-parts --test /etc/cron.daily
, mein Skript aufgelistet wird, also sollte es ausgeführt werden voncron.daily
Wenn Sie eine Idee haben, teilen Sie es mir bitte mit. Vielen Dank.
Antwort1
OK, ich habe die Lösung gefunden:
Ich habe das Skript zunächst nach verschoben /etc/cron.hourly
, da dort keines anacron
installiert war und ich es gerne stündlich nutzen wollte. Funktioniert hat es aber nicht.
Dann habe ich es ausgeführt, sudo service cron status
um zu prüfen, ob der Cron-Dienst aktiv war. Das war er, aber ich habe auch eine interessante Warnung gefunden, so etwas wie your token was expired, renew your token
. Also habe ich im Internet nach dieser Fehlermeldung gesucht und festgestellt, dass mein Root-Passwort erneuert werden musste, da Cron sonst nicht richtig funktionieren würde. Um dies zu prüfen, musste ich verwenden, sudo chage -l root
was zeigte, dass mein Root-Passwort lautete expired
.
Daher habe ich mein Root-Passwort mit erneuert sudo passwd root
und noch einmal mit geprüft, sudo chage -l root
was zeigte, dass das Passwort nun in Ordnung ist. Jetzt läuft alles einwandfrei und Cron funktioniert wie erwartet!