inotifywait shell 脚本 运行 作为守护进程

inotifywait shell script run as daemon

我有一个脚本可以(递归地)监视目录并在文件更改时执行命令。当如下使用监视标志时,这可以正常工作:

#!/bin/sh

inotifywait -m -r /path/to/directory |
    while read path action file; do
            if [ <perform a check> ]
            then
                my_command
            fi
    done

但是,我想 运行 在启动时和后台执行此操作,所以天真地以为我可以将 -m 标志更改为 -d(运行 inotifywait 作为守护进程,并包含一个 - -outfile 位置),然后将其添加到 rc.local 以在启动时使用此 运行。我哪里错了?

Incron 是用于 inotify 事件的类似 cron 的守护程序。

只需要使用 incrontab 和您的任务条目:

/path/to/directory IN_ALL_EVENTS /usr/local/bin/my-script $@ $# $%

/local/bin/my-script将是:

#! /bin/bash
local path=
local action=
local file=
if [ <perform a check> ]
then
  my_command 
fi

嗯....使用-d它自身背景并输出ONLY到outfile,所以你的整个管道和循环结构是没有实际意义,它永远看不到任何数据。

您需要在 /etc/rc.local

中的命令末尾添加一个 &

在命令末尾放置一个 & 意味着 运行 这个程序在后台,这样用户仍然可以输入。