基本上,当文件“product_id”准备好时,monit启动进程“CAD”。我的配置如下:
check file product_id with path /etc/platform/product_id
if does not exist then alert
check process cad with pidfile /var/run/cad.pid
depends on product_id
start = "/bin/sh -c 'cd /home/root/cad/scripts;./run-cad.sh 2>&1 | logger -t CAD'" with timeout 120 seconds
stop = "/bin/sh -c 'cd /home/root/cad/scripts;./stop-cad.sh 2>&1 | logger -t CAD'"
我希望“monit”在文件可用之前调用“start”。但它似乎在每个周期重新启动过程(停止和启动)。
这里配置有什么错误吗?
感谢任何帮助。
答案 0 :(得分:0)
重启每个周期的原因是因为product_id
文件尚未就绪。如果检查失败,将重新启动依赖于product_id
的任何内容。
我建议编写一个脚本来检查是否存在product_id
并启动CAD(如果有的话)。然后,您可以在monit中的“check program”块中运行此脚本。
答案 1 :(得分:0)
这是我的方法:
get_fields: function () {
if (!this._fields_def) {
this._fields_def = data_manager.load_fields(this.searchview.dataset).then(function (data) {
var fields = {
id: { string: 'ID', type: 'id', searchable: true }
};
_.each(data, function(field_def, field_name) {
if (field_def.selectable !== false && field_name !== 'id') {
fields[field_name] = field_def;
}
});
return fields;
});
}
return this._fields_def;
},
这将运行shell脚本,如果状态= 1,则错误。
Shell脚本:
check program ThisIsMyProgram with path "/home/user/program_check.sh"
every 30 cycles
if status == 1 then alert
Shell脚本检查文件是否存在,如果存在,它将启动进程并保持运行。