首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python多处理:权限被拒绝

Python多处理:权限被拒绝
EN

Stack Overflow用户
提问于 2010-01-06 05:37:07
回答 3查看 42.4K关注 1票数 55

我在尝试执行使用多处理包的python程序时遇到错误:

代码语言:javascript
复制
  File "/usr/local/lib/python2.6/multiprocessing/__init__.py", line 178, in RLock
    return RLock()
  File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 142, in __init__
    SemLock.__init__(self, RECURSIVE_MUTEX, 1, 1)
  File "/usr/local/lib/python2.6/multiprocessing/synchronize.py", line 49, in __init__
    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 13] Permission denied

看起来用户没有访问共享内存的权限。当以root权限执行时,它工作得很好。

有什么解决方案可以让它以普通用户(不是root用户)的身份运行吗?

Python version2.6.2,操作系统是Linux2.6.18 (CentOS release 5.4),它是VPS机。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-06 06:15:45

为了让POSIX信号量正常工作,用户需要对共享内存(/dev/shm)进行读/写访问。

检查/dev/shm的权限。在我的笔记本电脑(Ubuntu)上,它看起来是这样的:

代码语言:javascript
复制
$ ls -ld /dev/shm
drwxrwxrwt 2 root root          40 2010-01-05 20:34 shm

要永久设置正确的权限(即使在重新引导之后),请将以下内容添加到/etc/fstab

代码语言:javascript
复制
none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

我还没试过这个,只是从forum post复制过来的。

票数 73
EN

Stack Overflow用户

发布于 2014-11-06 18:14:58

在我的OVH VPS Classic中,这个错误是由/dev/shm和/run/shm中的循环引起的。两者都是相互链接的符号链接。因此,作为root,我这样做了:

代码语言:javascript
复制
# rm /dev/shm
# mkdir /dev/shm
# chmod 777 /dev/shm
# nano /etc/fstab

然后,我修改了shm行:

代码语言:javascript
复制
none /dev/shm tmpfs rw 0 0

至:

代码语言:javascript
复制
none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0

已重新启动服务器...这就解决了问题!或者,您也可以手动挂载shm:

代码语言:javascript
复制
# mount /dev/shm

希望这能有所帮助:-)

票数 5
EN

Stack Overflow用户

发布于 2018-12-12 19:33:52

无需重启的一种简单解决方案是

代码语言:javascript
复制
sudo chmod 777 /dev/shm

这解决了我的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2009278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档