1

これが状況です。Python で記述された Script1 は、ローカル ディレクトリにファイルを生成します。ファイルが「準備完了」になると、script1 はそれを準備完了ディレクトリに移動します。たとえば、Script2 は準備が整ったディレクトリを監視し、そこからリモート サーバーにファイルを移動します。だから、問題は次のとおりです。script2が準備完了ディレクトリからのみファイルを移動し、script1が移動を完了したことを確認するにはどうすればよいですか?

私が提案できる唯一の決定は、準備ができたディレクトリに移動するときにプレフィックスを追加し、移動が完了した後にファイルの名前を変更することです。Script2 は、プレフィックスのないファイルのみを移動する必要があります。この決定は私の状況に十分ですか?

アップデート。Debian 6 最小を使用しています。セキュリティ上の理由から、ファイルをリモート サーバーにコピーするために script1 を使用していません。

4

1 に答える 1

1

incron テーブルにイベントを追加して、/ready フォルダーを「監視」することができます。

コマンドラインから incron テーブルを表示するには:

incrontab -e

空である可能性が高いため、次のようにイベントを追加できます。

/folder/path/to/ready IN_CLOSE_WRITE /path/to/the/second/script/Script2.sh $#

このイベントでは、python ファイルを直接参照するのではなく、シェル スクリプトを参照していることに注意してください。INCRON は、ファイル名を最初の引数としてスクリプト ( $1 ) に渡します。この行は、/folder/path/to/ready で IN_CLOSE_WRITE イベントが発生するのを待つだけです。このイベントは、Script1 がこのフォルダーへのファイルの移動を終了したときにトリガーされます。

次に、Script2.sh を作成して、Python スクリプトを他の依存関係 (仮想環境のアクティブ化など) で呼び出すことができます。

簡単なシェル スクリプトは次のようになります。

python script2.py $1

次に、2 番目のスクリプトが着信ファイルを意図したとおりに処理することを確認してください。つまり、ファイルをリモート サーバーに移動します。

INCRON の詳細については、http://linux.die.net/man/5/incrontab を参照してください。

于 2013-05-22T15:56:41.763 に答える