2012-10-17 2 views
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 (Exclusive lock)을 만들 것이라는 것을 알고있다. 파일에 쓰는 동안 내 질문은

,

  1. 쉘 스크립트는 파일을 잠글 것인가? 그렇다면 어떤 종류의 잠금 장치가 독점적 인 공유 기능을 사용할 것입니까?
  2. 내 PHP 스크립트도 파일을 잠그고 있기 때문에 쉘 스크립트가 쓰지 못하게하고 쉘 스크립트에서 파일을 사용할 수 없게 할 것입니까?

나는 1 초 간격으로 쉘 스크립트에 파일을 쓰고 있기 때문에. 두 가지 스크립트 모두에서 파일 쓰기/읽기의 실패 가능성을 두려워합니다.

답변

0

일반적으로 모든 파일 쓰기에는 배타적 잠금이 필요합니다.

PHP 스크립트는 셸 스크립트가 릴리스 될 때까지 잠금을 획득 할 수 없으며 그 반대의 경우도 마찬가지입니다. 두 프로세스가 동일한 자원에 대해 경합하는 경우 교착 상태라고하는 결과가 발생합니다.

더 많은 프로세스 간 협력에 사용할 수있는 전략이 있지만 프로세스 목록을 생성하는 데 다른 전략을 사용하는 것이 좋습니다.

+0

예, 프로세스 카운트를 읽으려면 php의 exec() 함수를 사용하여 직접 명령을 실행할 수 있습니까? –