在我的Linux服务器上,我有2个Linux用户:
Jobby是一个PHP cron管理脚本,它在/tmp/xxxxx.lck为已经启动的每个作业/进程创建一个锁文件。
在 Rob 进来之前, Jim 曾经做过所有的事情,包括中央框架和具体工作。因此,cron脚本将以 Jim 的形式运行,锁定文件将由 Jim 创建并拥有,因此脚本读取锁定文件没有问题。
然而,当 Rob 进入并接管具体工作时, Rob 的cron脚本以 Rob 运行,后者调用Jobby图书馆由 Jim 拥有。因此,锁定文件由 Jim 创建并拥有。现在 Rob 的cron脚本无法读取由 Jim 创建的锁定文件并继续给出Jobby错误:
错误:无法打开文件(文件:/tmp/xxxx.lck)。
基本上,脚本A( Rob )调用脚本B( Jim )创建/tmp/xxxx.lck(-rw-r - r-- 1 Jim)吉姆),有没有安全的方法让脚本A( Rob )能够读取/tmp/xxxx.lck?
但不是权限(-rw-r - r--)可以,因为它允许任何人读取文件?这真的很奇怪。
那为什么Jobby会出现这个错误?
当我写这个问题时,我会发现我应该找出为什么Jobby首先抛出这个错误。我发现了这个:
Form1 formname = new Form1();
Application.Run(formname);
// access to form by formname.yourproperty
所以它要求锁定文件的读取和写入权限。
由于锁文件是(-rw-r - r-- 1 Jim Jim)Rob的脚本无法写入它 - 我猜这是问题吗?
但为什么Jobby会将文件创建为 Jim ,但会将其打开为 Rob ?
我有什么方法可以将创建,然后打开文件作为Rob?
答案 0 :(得分:0)
这很尴尬。似乎/tmp/xxxx.lck最初是由Jim在Rob进来之前创建的。
所以我需要的是将文件/tmp/xxxx.lck删除为Jim。现在当Rob运行他的脚本时,同样的锁文件将被创建为Rob,而且一切都好了。