Monit para desligar a máquina quando o programa estiver concluído

0

Estou tentando configurar o monit para desativar minha máquina virtual quando meu programa for concluído. (O programa é executado como um daemon, leva muito tempo, o que eu não sei de antemão, e minha máquina é cara, então eu quero economizar dinheiro.)

Eu criei o seguinte .monitrc no meu diretório pessoal:

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"

Eu criei o arquivo de log e o arquivo de soquete e os tornei graváveis.

Ainda monit monitor all dá dois erros:

/home/baruch/.monitrc:6: Program does not exist: 'sudo'

Unix socket /run/monit.socket connection error -- Connection refused

Qualquer ajuda será apreciada.

    
por Baruch Youssin 30.09.2018 / 05:34

1 resposta

0

Como não recebi nenhuma resposta, concluo que, infelizmente, monit não é bem apoiado pela comunidade e possivelmente não é muito usado.

Eu criei o seguinte script que serve ao meu propósito:

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

Aqui : é um não operacional que retorna verdadeiro,

while :
do
...
done

é um loop infinito, python3 é o programa que estou monitorando, ps -C python3 é um comando que retorna true se python3 estiver em execução (possivelmente com qualquer parâmetro) e false caso contrário, &> /dev/null descarta a saída de este comando (caso contrário, ele é impresso a cada minuto no terminal), sudo systemctl poweroff é o comando que desliga o meu computador, sleep 60 coloca o script para dormir por 1 minuto.

Coloquei este código em um arquivo, denominei monitor , tornei-o executável e o executei da seguinte maneira:

./monitor & disown

Aqui & executa o script em segundo plano e disown permite que o script continue sendo executado mesmo depois que o terminal do qual eu iniciei o script estiver fechado.

    
por 05.10.2018 / 11:26

Tags