我是相当新的monit,我想知道如果这个脚本是足以重新启动一个崩溃的程序可以说program1是该程序的名称。
check process program1 matching "program1" start program = "/home/user/files/start.sh" stop program = "/home/user/files/stop.sh"
它现在会重新启动一个崩溃的程序? 我该如何保证在程序运行时不会重新启动程序?
编辑:一些更多的信息该程序使用端口30000 udp。 这会使它更谨慎吗? 而“周期”之间有多less秒?
if Failed port 30000 type UDP for 3 cycles then restart
Cywgin没有正确运行脚本
防止进程使用pkill自杀
有没有办法在不中断输出的情况下从pipe道尾部命令每分钟打印一次?
Linux的cpu使用率,然后在算术expression式中使用它
closuresterminal后,保持运行快车的过程
运行时分析文件的bash脚本
通过SSH远程运行脚本
使用三通时redirect输出挂起
尝试从内部通过屏幕启动一个进程
Perl匿名pipe道没有输出
Monit使用系统调用execv来执行程序或脚本。 这意味着你不能直接在start,stop或exec语句中编写shell命令。 要做到这一点,你必须按照上面的方法去做。 启动一个shell并在那里发出你的命令。
Read about execution
这只是你应该执行程序或脚本的例子:
check process program1 matching "program1" start program = "/bin/bash -c '/home/user/files/start.sh'" stop program = "/bin/bash -c '/home/user/files/stop.sh'"
基于ConfigurationExamples
假设你有这样的脚本:
#!/usr/bin/python import os,time f = open('/tmp/myapp.pid','w') f.write(str(os.getpid())) f.close() time.sleep(9)
创建一个monit.conf
set httpd port 2812 and allow monit:monit set daemon 5 check process program with pidfile /tmp/myapp.pid start program = "/home/vagrant/myapp.py
然后用这个命令运行monit:
monit -c monit.conf
现在,Monit在后台运行,如果死亡,则重新运行该进程
我会开始一个简单的节点服务器,如果你杀了,monit会重新启动它,如果设置正确,你也会收到一封电子邮件。
位置/home/xxx/monitoring/nodejs
文件:node-server.js
var http = require('http'); var port = 8002; var fs = require('fs'); var logStream = fs.createWriteStream(port+"_log.txt",{'flags':'a'}); var count = 0; http.createserver(function(req,res){ var output = (++count) + ' Request received in '+port+' @ ' + new Date()+'n'; console.log(output); logStream.write(output); res.writeHead(200,{'Content-Type' : 'text/plain'}); res.end('From '+port+' @ ' + new Date()); }).listen(port); console.log('server running @ ' + port)
FILE:server.sh
#!/bin/bash process=$1 PID_FILE="/home/xxx/monitoring/nodejs/file.pid" case $process in start) echo "STARTING node js server in port 8002" nohup /usr/sbin/node /home/xxx/monitoring/nodejs/node-server.js > /home/xxx/monitoring/nodejs/server.log 2>&1 & echo $! > $PID_FILE ;; stop) kill -9 $(cat $PID_FILE) rm $PID_FILE ;; *) echo "INVALID OPTION" ;; esac
位置:/ etc / monit / monitrc(用于ubuntu)
set mail-format { from: monit@TEST subject: monit alert -- XXX-PROD $EVENT $SERVICE message: $EVENT Service $SERVICE Date: $DATE Action: $ACTION Host: $HOST Description: $DESCRIPTION Your faithful employee,} set mailserver smtp.gmail.com port 587 username "[email protected]" password "xxx" using tlsv1 set alert [email protected] check process nodejs-server with pidfile /home/xxx/monitoring/nodejs/file.pid start program = "/home/xxx/monitoring/nodejs/server.sh start" stop program = "/home/xxx/monitoring/nodejs/server.sh stop
“
一旦服务器运行,点击浏览器http:// localhost:8002 / 。 它会显示一些结果。 现在通过从“监视状态”或其他任何方式查找进程ID来终止进程。 你会收到一封邮件,说这个过程不存在,但过了一段时间后,服务器将运行,你会得到一个邮件,说'过程重新开始'。
但请记住,如果你停止从monit命令的过程就好
monit stop nodejs-server
那么它将不会重新启动。 你会收到一封邮件,说你的进程已经停止。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。