我在尝试执行使用多处理包的python程序时遇到错误:
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机。
发布于 2010-01-06 06:15:45
为了让POSIX信号量正常工作,用户需要对共享内存(/dev/shm
)进行读/写访问。
检查/dev/shm
的权限。在我的笔记本电脑(Ubuntu)上,它看起来是这样的:
$ ls -ld /dev/shm
drwxrwxrwt 2 root root 40 2010-01-05 20:34 shm
要永久设置正确的权限(即使在重新引导之后),请将以下内容添加到/etc/fstab
中
none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0
我还没试过这个,只是从forum post复制过来的。
发布于 2014-11-06 18:14:58
在我的OVH VPS Classic中,这个错误是由/dev/shm和/run/shm中的循环引起的。两者都是相互链接的符号链接。因此,作为root,我这样做了:
# rm /dev/shm
# mkdir /dev/shm
# chmod 777 /dev/shm
# nano /etc/fstab
然后,我修改了shm行:
none /dev/shm tmpfs rw 0 0
至:
none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0
已重新启动服务器...这就解决了问题!或者,您也可以手动挂载shm:
# mount /dev/shm
希望这能有所帮助:-)
发布于 2018-12-12 19:33:52
无需重启的一种简单解决方案是
sudo chmod 777 /dev/shm
这解决了我的问题。
https://stackoverflow.com/questions/2009278
复制相似问题