0

ファイルにコンテンツを書き込むシェルスクリプトがあります。

#!/bin/bash
SLEEP=1
FILE_PATH=${1}
while true
  do
    ps aux wc -l > ${FILE_PATH}
    sleep ${SLEEP}
done

file_get_contents() を使用してファイルの内容を読み取る別の PHP スクリプトがあります。file_get_contents() が LOCK_EX (排他ロック) を作成することは承知しています。

私の質問は、

  1. シェル スクリプトは、ファイルへの書き込み中にファイルをロックしますか? はいの場合、どのタイプのロックを排他的、共有..に使用しますか?
  2. 私の PHP スクリプトもファイルをロックしているため、シェル スクリプトの書き込みが停止し、ファイルがシェル スクリプトで使用できなくなりますか?

私は1秒間隔でシェルスクリプトでファイルを書いているので。両方のスクリプトでファイルの書き込み/読み取りが失敗する可能性があるのではないかと心配しています。

4

1 に答える 1

0

通常、ファイルの書き込みには排他ロックが必要です。

PHP スクリプトは、シェル スクリプトが解放されるまでロックを取得できません。これにより、2 つのプロセスが同じリソースをめぐって競合しているときに、いわゆるデッドロックが発生します。

より豊かなプロセス間連携に使用できる戦略がありますが、プロセス リストの生成には別の戦略を使用することをお勧めします。

于 2012-10-17T05:54:17.970 に答える