程序完成后监控关闭机器

程序完成后监控关闭机器

我正在尝试设置monit程序完成后关闭虚拟机。(该程序作为守护进程运行,需要很长时间,我事先并不知道,而且我的机器很贵,所以我想省钱。)

.monitrc我在我的主目录中创建了以下内容:

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"

我已经创建了日志文件和套接字文件并使它们可写。

仍然monit monitor all出现两个错误:

/home/baruch/.monitrc:6: 程序不存在:'sudo'

Unix 套接字 /run/monit.socket 连接错误——连接被拒绝

任何帮助将不胜感激。

答案1

由于我没有收到任何答复,我得出的结论是,不幸的是,monit它没有得到社区的很好支持,而且可能没有得到广泛使用。

我想出了以下可以满足我目的的 bash 脚本:

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

:是一个返回 true 的无操作,

while :
do
...
done

是一个无限循环,python3是我正在监控的程序,ps -C python3是一个如果python3正在运行(可能带有任何参数)则返回 true 否则返回 false 的命令,&> /dev/null丢弃此命令的输出(否则它会每分钟在终端上打印一次),sudo systemctl poweroff是关闭我的计算机的命令,sleep 60让脚本休眠 1 分钟。

我把这段代码放在一个文件中,将其命名为monitor,使其可执行并按如下方式运行它:

./monitor & disown

这里&在后台运行脚本,并disown允许脚本在我启动脚本的终端关闭后继续运行。

相关内容