Überwachen, um die Maschine auszuschalten, wenn das Programm beendet ist

296
Baruch Youssin

Ich versuche einzurichten, monitmeine virtuelle Maschine auszuschalten, wenn mein Programm fertig ist. (Das Programm läuft als Daemon und dauert lange, was ich nicht im Voraus weiß, und meine Maschine ist teuer, daher möchte ich Geld sparen.)

Ich habe .monitrcin meinem Home-Verzeichnis Folgendes erstellt :

set daemon 60 set logfile /run/monit.log set httpd unixsocket /run/monit.socket allow baruch:monit check process python3 matching python3 start program = "sudo systemctl poweroff" 

Ich habe die Protokolldatei und die Socketdatei erstellt und sie beschreibbar gemacht.

Trotzdem monit monitor allgibt das zwei Fehler:

/home/baruch/.monitrc:6: Programm existiert nicht: 'sudo'

Unix-Socket /run/monit.socket Verbindungsfehler - Verbindung abgelehnt

Jede Hilfe wird geschätzt.

0

1 Antwort auf die Frage

0
Baruch Youssin

Da ich keine Antworten erhalten habe, komme ich zu dem Schluss, dass monitdie Community leider nicht gut unterstützt wird und möglicherweise nicht so viel verwendet wird.

Ich habe folgendes Bash-Skript entwickelt, das meinem Zweck dient:

#!/bin/bash while : do if ps -C python3 &> /dev/null then : else sudo systemctl poweroff fi sleep 60 done 

Hier :ist ein No-Op, der wahr zurückgibt,

while : do ... done 

eine Endlosschleife ist, python3wird das Programm I überwacht werde, ps -C python3ist ein Befehl, true zurück, wenn python3sie (möglicherweise mit beliebigen Parametern) ausgeführt wird und andernfalls FALSE, um &> /dev/nulldie Ausgabe dieses Befehls verwirft (sonst wird es jede Minute im Endgerät bedruckt), sudo systemctl poweroffist Der Befehl, der meinen Computer ausschaltet, sleep 60versetzt das Skript für 1 Minute in den Ruhezustand.

Ich habe diesen Code in eine Datei geschrieben, benannt monitor, ausführbar gemacht und wie folgt ausgeführt:

./monitor & disown 

Hier wird &das Skript im Hintergrund ausgeführt und disowndas Skript kann nach dem Schließen des Terminals weiter ausgeführt werden.