0

我有一个 shell 脚本,它将内容写入文件,

#!/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. shell脚本会在写入文件时锁定文件吗?如果是的话,它将使用什么类型的锁,独占,共享......?
  2. 由于我的 PHP 脚本也锁定了文件,它会阻止 shell 脚本写入并使文件对 shell 脚本不可用吗?

因为我以 1 秒的间隔在 shell 脚本中编写文件。我担心两个脚本中文件写入/读取失败的可能性。

4

1 回答 1

0

通常,任何文件写入都需要独占锁。

在 shell 脚本释放之前,PHP 脚本将无法获得其锁定,反之亦然。当两个进程竞争相同的资源时,这会导致所谓的死锁。

您可以使用一些策略来实现更丰富的进程间合作,但我建议您使用不同的策略来生成进程列表。

于 2012-10-17T05:54:17.970 回答