
Ich habe ein sehr einfaches Bash-Skript (run-build.sh):
cd /var/www/project
npm run build
Dieses Skript funktioniert einwandfrei, wenn ich es über die Befehlszeile ausführe, aber ich möchte es alle 30 Minuten über einen Cron-Job ausführen:
*/30 * * * * /var/www/project/run-build.sh >> /var/www/test.log 2>&1
Was aus irgendeinem Grund nicht funktioniert. Ich habe verschiedene andere Ansätze ausprobiert, z. B. das Ausführen des Cron-Jobs als Root-Benutzer oder das Hinzufügen des Pfads zum Knoten als Teil des Cron-Jobs. Ich habe jedoch noch keine Lösung gefunden, weshalb ich jetzt hier poste.
Hat jemand eine Idee, wie dieser Cron-Job zum Laufen gebracht wird?
Antwort1
Ich habe meinen Cronjob wie folgt aktualisiert:
* */12 * * * sudo -u user /var/www/project/run-build.sh >> /var/www/test.log 2>&1
und jetzt funktioniert es. Ich bin sicher, dass ich das schon einmal versucht habe, aber ich muss etwas anderes ausprobiert haben.
Antwort2
Ich hatte ein ähnliches Problem. In meinem Fall lag das Problem daran, dass mein .sh-Skript keine Ausführungsberechtigung hatte.
Überprüfen Sie mit , ob die Skriptdatei über Ausführungsberechtigung ( x
Flag) verfügt ll
. Wenn nicht, etwas wie:
chmod 744 file
sollte Ihrem Benutzer die Ausführung ohne Root ermöglichen.