0

Linux bash の特定のディレクトリを 2 秒ごとにチェックし、そこにファイルが存在する場合は、実行中のデーモン プロセスがそのファイルをハイジャックする前に、そのファイルのコピーをディレクトリに作成します (そのファイルに対して何らかの処理と変更を行い、処理されたファイルをすばやく移動します)。ファイルを別のディレクトリに)。

私はこれを試しました:

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

cpしかし、うまくいきません。構文が間違っているに違いないと思います。試してみましたが/home/a/*、どれも機能しませんでした。/home/a/home/a/

これを bash シェルで行う方法はありますか?

4

1 に答える 1

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

(これは一般的にかなり信頼できないことに注意してください。部分的に書き込まれたファイルをコピーしたり、ファイルを完全に見逃したりする可能性があります。)

于 2012-04-30T11:18:15.880 に答える