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.
- 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.
- 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.