2012-10-17 42 views
0

我有一個shell腳本,在該文件中寫入內容,在寫內容時shell腳本會鎖定一個文件嗎?

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

我還有一個PHP腳本讀取使用的file_get_contents該文件的內容()。我知道file_get_contents()會產生一個LOCK_EX(獨佔鎖定)。

我的問題是,

  1. 將同時寫入到文件中的shell腳本鎖定文件?如果是,它將使用什麼類型的鎖專有,共享..?
  2. 由於我的PHP腳本也在鎖定文件,它會停止shell腳本的寫入並使該文件不可用於shell腳本?

因爲我以1秒爲間隔在shell腳本中編寫文件。我擔心在兩個腳本中寫入/讀取文件的機會都會失敗。

回答

0

通常,任何文件寫入都需要獨佔鎖定。

在腳本釋放之前,PHP腳本將無法獲取其鎖定,反之亦然。這導致了所謂的死鎖,當兩個進程競爭同一資源時。

您可以使用更豐富的進程間合作策略,但我會建議使用不同的策略來生成進程列表。

+0

是的,我可以直接使用php的exec()函數讀取進程數量來執行命令嗎? –

相關問題