Das Skript läuft nicht unter cron läuft aber manuell
Ich habe ein Skript, dass ein Entwickler schrieb für mich die führt die verschiedenen Funktionen vor allem im Zusammenhang mit ffmpeg. Wenn ich das Skript manuell mit
sh /home/site/rawvids/encode.sh > /home/site/rawvids/log.txt
Läuft das script einwandfrei, aber wenn er läuft durch cron-es schlägt fehl mit Fehler code 127
Irgendwelche Ideen?
ls -l
auf das Skript zeigt:
-rwxrwxrwx 1 site niemand 3786 Jul 23 17:07 /home/site/rawvids/encode.sh*
- a) unterschiedliche PFAD von cron? b) Berechtigungen auf das Skript halten cron aus ausgeführt?
- Berechtigungen auf das Skript?
ls -l /home/zavids/rawvids/encode.sh
und fügen Sie die Ausgabe auf die Frage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fehler 127 bedeutet "Befehl nicht gefunden".
Es ist wahrscheinlich, dass Sie ausführen in dem script einige Befehle, die nicht in der von
cron
(Sie können sehen, was cron-PFAD ist, wenn man sich/etc/crontab
).Können Sie Ihre aktuellen PFAD in der shell:
Dann kopieren Sie diesen PFAD an den Anfang des Skripts:
Statt
...
schreiben Sie die Zeile, die Sie haben früher (mitecho $PATH
).Prüfen Sie auch, ob Sie shebang Zeile
#!/bin/sh
am Anfang des Skripts. Es ist importieren, wenn Sie starten Sie den Skript-ohnesh
in der Befehlszeile.Außerdem wäre es toll, wenn könnten Sie zeigen uns die Linie von
/etc/crontab
das Skript ausgeführt wird./etc/crontab
ist es falsch. Fügen Sie username (root
oderzavidis
), bevor die Kommandozeile;52 19 * * * root sh ...
* * * * * root date >> /tmp/date.log
und überprüfen Sie die Datei/tmp/date.log
?/etc/crontab
oder auf den Benutzer-crontab?/etc/crontab
. Bitte führen Siecrontab -e
und entfernenroot
aus der Zeile, die Sie Hinzugefügt haben. Die Zeile muss so Aussehen:* * * * * date >> /tmp/date.log
sh /home/zavids/rawvids/encode.sh >> /home/zavids/rawvids/log.txt
stattdate >> /tmp/date.log
? Und (2) fügen Sie diese Zeiledate >> /tmp/date.log
auf die erste Zeile der/home/zavids/rawvids/encode.sh
nur zu prüfen, wenn die Zeile ausgeführt wird (wenn es, dass bedeutet, das Skript wird ausgeführt, auch).2>&1
an das Ende des Befehls:sh /home/zavids/rawvids/encode.sh >> /home/zavids/rawvids/log.txt 2>&1
und überprüfen log.txt wieder einmal?/home/zavids/www/vfiles
sh /home/zavids/rawvids/encode.sh >> /home/zavids/rawvids/log.txt 2>&1
auscron
!crontab
. Wenn es das gleiche ist, dann nicht, muss es einen anderen Grund.which ffmpeg
und sagen, das Ergebnis?PATH=/usr/local/bin:$PATH
an den Anfang des Skripts (in der zweiten Zeile).Wahrscheinlich sind Sie entweder abhängig von einer environment-variable ist, die eingestellt ist nicht für cron (ich bin mir nicht sicher, ob cron verwendet?) oder die Berechtigungen für cron ausgeführt wird, sind falsch. Wenn Sie umleiten der Ausgabe wie in der cron-version, wird es keine Ausgabe?
gleiche ..., gut das ich gerade stehen kann, diesen Weg Fragen , ich habe ein symbolischer link auf die ffprobe-Pfad oder was auch immer fehlt , ist so etwas wie
ln -s /usr/local/bin/ffprobe /home/ec2-user/.rvm/rubies/ruby-2.3.0/bin/ffprobe