每2秒检查一次目录内容,如果bash中存在某个文件,则复制其内容

时间:2012-04-30 10:18:08

标签: linux bash shell daemon infinite-loop

我想每隔2秒检查linux bash中的一个特定目录,如果存在任何文件,那么在运行的守护程序进程劫持该文件之前,将该文件的副本复制到目录(对该文件进行一些处理和修改,并快速将处理过的文件移动到另一个目录。)

我试过了:

while true; do
  cp * /home/a/*;
  sleep 1;
done

但它不起作用:我想我的cp语法一定是错的。我尝试了/home/a/*/home/a/home/a/,但都没有。

我有什么方法可以在bash shell中执行此操作吗?

1 个答案:

答案 0 :(得分:0)

你快到了,但是你需要考虑那个目录中没有文件的情况。

使用bash中的正确选项,非常简单:

#! /bin/bash

shopt -s nullglob # to get an empty list if no file is present

while true ; do
    for i in * ; do
        echo "Intercepted $i"
        cp "$i" /home/a/
    done
    sleep 1
done

(请注意,这一般非常不可靠。您可以复制部分写入文件,完全错过文件等。)