Ubuntu 20.04 @reboot Cronjob führt kein Skript aus

Ubuntu 20.04 @reboot Cronjob führt kein Skript aus

Ich habe einen Vultr-Server in einem Ubuntu, also 20.04, ich erstelle ein Bash-Skript im folgenden Verzeichnis

/startupscripts/apilibro

Innerhalb des Skripts muss ich meinen Directus-Server starten, der Yarn Directus Start ausführt

!#/bin/bash
cd /var/www/vhosts/librocambio.cl/core.librocambio.cl/apilibro
/usr/bin/yarn directus start

Ich gebe chmod 755 zum Lesen, Schreiben und Ausführen des Skripts, schließlich führe ich crontab -e aus und füge den folgenden Code hinzu, der ausgeführt wird, wenn der Server neu gestartet wird

@reboot /startupscripts/apilibro

Mein Problem besteht darin, dass der Befehl „Yarn Directus Start“ nicht ausgeführt wird. Wenn ich ihn lokal ausführe, funktioniert der Befehl, aber bei einem Neustart von Ubuntu funktioniert er nicht. Schließlich teste ich das Bash-Skript, indem ich eine Zeile als „Touch Index.js“ hinzufüge, und es funktioniert, aber der Befehl „Yarn Directus Start“ wird nicht ausgeführt.

Irgendeine Idee, wie man dieses Problem lösen könnte?

Antwort1

1. Weg,

ich denke, Sie können den Befehl verwenden, um das Protokoll von Crond auszuchecken

tail -f /var/log/cron.log

Die Ausgabe hier könnte Ihnen einige Informationen geben.

Wenn kein cron.log vorhanden ist, verwenden Sie diesen Befehl und starten Sie den rsyslog-Dienst neu

sed -i '/#cron.*/s/^#//g' /etc/rsyslog.d/50-default.conf

systemctl restart rsyslog.service

2. Platz

Vielleicht entspricht die Garnumgebung nicht Ihrer Verwendung, die den Crond ausführt?

Antwort2

Problem gelöst. So habe ich mein Problem gelöst.

  1. Ich habe das Skript manuell mithilfe der Bash-API ausgeführt und dabei festgestellt, dass Yarn in meinen Umgebungsvariablen nicht vorhanden war. Ich habe es lediglich hinzugefügt, wie @Artur Medim sagt.
  2. Mir ist aufgefallen, dass meine Node.JS-Version standardmäßig 10.xx war. Als ich sie mit NVM geändert habe, funktionierte es. Als ich das System jedoch neu startete oder mein SSH-Terminal schloss, änderte sich die Node.JS-Version auf die Standardversion. Daher habe ich meine Version korrekt auf 16.xx aktualisiert, um sicherzustellen, dass dies nicht passiert.

Danach konnte ich das Skript manuell und per Cronjob ausführen. Vielen Dank an alle für Ihre Antworten.

verwandte Informationen