Monit等待文件启动进程?

时间:2016-03-29 00:59:20

标签: monit

基本上,当文件“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”。但它似乎在每个周期重新启动过程(停止和启动)。

这里配置有什么错误吗?

感谢任何帮助。

2 个答案:

答案 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脚本检查文件是否存在,如果存在,它将启动进程并保持运行。