我有一个R包,它将一个作业发送到我通过Rmpi包运行的OpenMPI集群。在从控制台运行的R会话中,所有工作都符合预期。然而,当我尝试从我的OpenCPU服务器执行相关功能时,如下所示(为了保护无辜,更改了细节):
curl -XPOST http://99.999.999.99/ocpu/library/MyPackage/R/my_cluster_function
我得到这个错误:
R call failed: process died.
(包中的其他非集群调用函数通过OpenCPU按预期工作)。我注意到在/var/log/kern.log
中,apparmor将各种请求称为DENIED
,并且通过在/etc/apparmor.d/opencpu.d/custom
中添加条目以允许OpenMPI访问所需的文件,我已经能够解决其中的大多数请求。然而,我无法解决与位置"/"
:的"打开"请求相关的这两个问题(再次,IP地址更改)
Oct 26 03:49:58 99.999.999.99 kernel: [142952.551234] type=1400 audit(1414295398.849:957): apparmor="DENIED" operation="open" profile="opencpu-main" name="/" pid=22486 comm="orted" requested_mask="r" denied_mask="r" fsuid=33 ouid=0
Oct 26 03:49:58 99.999.999.99 kernel: [142952.556422] type=1400 audit(1414295398.857:958): apparmor="DENIED" operation="open" profile="opencpu-main" name="/" pid=22485 comm="apache2" requested_mask="r" denied_mask="r" fsuid=33 ouid=0
将此添加到我的服装规则中没有帮助:
/* r,
两个问题:
- 为什么opencpu试图从我的根级目录中读取(或者这意味着其他什么)
- 更紧迫的是,我该如何解决这个幽灵问题
谢谢。
您可能需要添加两个apparmor规则
/ r,
/* r,
第一条规则允许/
的目录列表,第二条规则允许读取/
下的任何文件。
我不明白为什么Rmpi
想要读取/
,或者为什么你得到了process died
错误而不是拒绝访问。你确定问题已经完全解决了吗?