1

次の処理を行う Linux スクリプトを作成する必要があります。ftpuser というディレクトリからすべての .ear ファイルと .war ファイルを検索し、そこに表示される新しいファイルも含めて、レポートを生成する 1 つのコマンドを実行します。コマンドが終了したら、それらのファイルを別のディレクトリに移動する必要があります。

以下で、コマンドの開始方法を見つけたと思います。私の質問は、レポートを取得できるように、ディレクトリで新しいエントリを見つけてコマンドを実行する方法を知っている人はいますか?

find /directory -type f -name "*.ear" -or -type f -name "*.war" 
4

2 に答える 2

2

これも役立つかもしれません:ディレクトリの変更を監視する

時間が重要ではないが、再起動などのたびに手動でスクリプト (devnull によって提案されたものなど) を開始したくない場合は、cron ジョブを使用することをお勧めします。

でジョブを設定できます

crontab -e

次のような行を追加します。

* * * * * /usr/bin/find /some/path/ftpuser/ -type f -name "*.[ew]ar" -exec sh -c '/path/to/your_command $1 && mv $1 /target_dir/' _ {} \;

これにより、毎分検索が実行されます。間隔は変更できます。概要については、https://en.wikipedia.org/wiki/Cronを参照してください。&& を使用すると、your_command が成功した場合にのみ移動が実行されます。手動で実行して確認できます。

echo $?

0 は true または成功を意味します。詳細については、http://tldp.org/LDP/abs/html/exit-status.htmlを参照してください。

于 2013-09-04T17:16:20.220 に答える
2

スクリプトを無期限に実行したいようです。find必要な操作を実行するためにファイルをループします。

while : ; do
  for file in $(find /directory -type f -name "*.[ew]ar"); do
    some_command "${file}"           # Execute some command for the file
    mv "${file}" /target/directory/  # Move the file to some directory
  done
  sleep 60s                          # Maybe sleep for a while before searching again!
done
于 2013-09-04T13:49:53.767 に答える