Ich muss eine VM-Instanz in der Google Compute Engine mit einem Startskript erstellen, das 30 Minuten dauert, aber es wird nie beendet, es stoppt etwa 10 Minuten nach dem Start der Instanz. Gibt es eine Auszeit? Gibt es eine andere Alternative, um das zu erreichen, was ich tun muss? Vielen Dank!Gibt es ein Zeitlimit für das Startskript, das beendet wird, bevor es beendet wird?
Antwort
die zusätzliche Klärung in den Kommentaren Gegeben:
Downloads Mein Skript ein weiteres Skript und führt es dann, und das Skript was tut, ist einige große Dateien herunterladen, und dann einige Werte basierend auf Breite/Länge berechnen. Wenn der Prozess beendet ist, wird die VM zerstört.
Meine Empfehlung wäre, den großen Download und die Verarbeitung asynchron statt synchron auszuführen. Der Grund dafür ist, dass wenn es synchron ist, es Teil des VM-Starts (im kritischen Pfad) ist und die VM-Überwachungsinfrastruktur bemerkt, dass die VM ihre Startphase nicht innerhalb einer angemessenen Zeit beendet und sie beendet.
Stattdessen nehmen Sie die Heavy-Duty-Verarbeitung aus dem kritischen Pfad und tun Sie es im Hintergrund, d. H. Asynchron.
Mit anderen Worten, die derzeit das Startskript sieht wahrscheinlich wie:
# Download the external script
curl [...] -o /tmp/script.sh
# Run the file download, computation, etc. and shut down the VM.
/tmp/script.sh
ich Umwandlung würde vorschlagen, dies zu:
# Download the external script
curl [...] -o /tmp/script.sh
# Run the file download, computation, etc. and shut down the VM.
nohup /tmp/script.sh &
Was das bedeutet ist die schwere Verarbeitung im Hintergrund starten, aber Trennen Sie es außerdem vom übergeordneten Prozess, sodass es nicht automatisch beendet wird, wenn der übergeordnete Prozess (das eigentliche Startskript) beendet wird. Das Hauptskript soll beendet werden, damit die gesamte Startphase der VM als abgeschlossen markiert wird.
Weitere Informationen finden Sie unter Wikipedia page on nohup
.
Danke! Ich werde diese Lösung versuchen und Sie wissen lassen –
- 1. Der Alarm wird beendet, wenn das Betriebssystem die App beendet
- 2. Docker wird beendet, bevor fork die Ausführung beendet?
- 3. Erstellen eines Dialogfelds, das automatisch beendet wird
- 4. Wartet eine .NET-Anwendung darauf, dass alle Vordergrund-Threads beendet werden, bevor das Programm beendet wird?
- 5. Fragment aktualisieren, wenn das Dialogfragment beendet wird
- 6. Skript, das Multiprozessormodul verwendet, wird nicht beendet
- 7. Warten, bis ein Thread beendet ist, bevor fortgefahren wird
- 8. Wird der ausgelöffte Speicher freigegeben, wenn das Programm beendet wird?
- 9. Wie kann ein Linux-Zeichengerätetreiber erkennen, wenn ein Programm, das es verwendet, abnormal beendet wird?
- 10. Das lokale Hadoop-Jobverzeichnis wird gelöscht, bevor der Job auf den Task-Knoten beendet wird
- 11. Ist es sinnvoll, CloseHandle() in einem Thread aufzurufen, bevor es beendet wird?
- 12. Das Programm wird nicht beendet, wenn clj-statsd verwendet wird
- 13. Schaltfläche wird gedrückt, bevor die Segu beendet wird iOS + Swift
- 14. iPython reagiert nicht, während das Programm ausgeführt wird. Wird antworten, wenn das Programm beendet wird
- 15. Gibt es eine Möglichkeit festzustellen, wann ein .NET-Thread beendet wird?
- 16. App wird nicht beendet
- 17. Android: IntentService wird beendet
- 18. Dojo: Gibt es ein Ereignis nach Drag & Drop beendet
- 19. PHP: Wie Seite anzeigen, bevor das Skript beendet ist?
- 20. Korrekte Art zu warten, bis mehrere Threads beendet sind, bevor das Programm in C++ beendet wird. 11
- 21. CICS-Transaktion, die Ressourcen nicht freigibt, wenn es beendet wird
- 22. Beenden Sie Child-Threads, wenn das übergeordnete Thread beendet wird
- 23. Abfangen einer Python-App, bevor sie beendet wird
- 24. Wie wird HTML5-Video eingeblendet, wenn das Laden beendet ist?
- 25. React entfernt dom, bevor die Animation ReactCSSTransitionGroup beendet wird
- 26. Twilio ausgehenden Anruf funktioniert nicht, es wird automatisch beendet
- 27. Python-Prozess wird nicht beendet
- 28. Wie stelle ich sicher, dass D3 das Laden mehrerer CSVs beendet, bevor JavaScript ausgeführt wird?
- 29. Skript in Javascript geschrieben, das nicht selbständig beendet wird?
- 30. break beendet das Programm - C++
Können Sie klären, was Ihr Startscript macht, das 30 Minuten dauert? Software herunterladen/installieren/konfigurieren? Kannst du es nach VM-Booten mit Tools wie Chef, Ansible, Puppet, Salt usw. machen? Sie helfen Ihnen auch beim Aktualisieren/Neukonfigurieren von Live-VMs während der Ausführung und nicht nur beim Start. Alternativ können Sie benutzerdefinierte VM-Images mit [Packer] (https://www.packer.io/) erstellen. –
@MishaBrukman Mein Skript lädt ein anderes Skript herunter und führt es dann aus. Das Skript lädt einige große Dateien herunter und berechnet dann einige Werte basierend auf dem Längen-/Breitengrad. Wenn der Prozess beendet ist, wird die VM zerstört. Ich hatte diesen Prozess ohne Probleme im digitalen Ozean. –