Ubuntuデスクトップシステムで最初のcronを設定しています。 cronが実行される前にフォルダをロックする方法と設定方法があるかどうかを知りたいです。私はフォローしていますこれ記事。共有ネットワーク上にあるので、ファイルをcronフォルダから移動したときにファイルが破損していないことを確認したいと思います。
ベストアンサー1
ファイルにアクセスする前のロックと遅延機能を含む簡単なスクリプト:
#!/bin/sh
if mkdir /tmp/myscript-running; then
cd /mnt/share/whereever
find . -type f -mmin +1 -print0 | xargs -i -n 1 -0 myscript.sh "{}"
rmdir /tmp/myscript-running
else
: # previous instance still running, do nothing
fi
find
このオプションにはGNUまたは同等のものが必要です-mmin
。必要に応じてcronを介してこのコマンドを実行できます。myscript.sh
処理スクリプトに置き換えてください。
主な機能は次のとおりです。
mkdir
インスタンスが重複するのを防ぐためにロックされたディレクトリを作成するために使用されます。find
withを使用する-mmin +1
と、1分以上前に変更されたファイルに出力を制限できます。これは、新しいファイルが完全にコピーされたことを確認するためのものです。xargs
一度に1つのファイルを処理するために使用され、"{}"
ファイル名を次のように変更します。- 迷惑なファイル名で問題が発生しないように終了
\0
したファイル名を使用してください。find | xargs
find
必要に応じてパラメータを変更できる必要があります。上記のロジックを使用して、完成したファイルをディレクトリuploading/
からディレクトリに移動することもできます。これにより、ready/
作業を簡素化できます。
Ubuntuにも有用である可能性がありますlockfile
。shlock
より多くのアイデアについては、後者のマニュアルページをご覧ください。