python - مكتبة - منتديات بايثون




بايثون المعالجة المتعددة: تم رفض الإذن (2)

حل واحد بسيط دون إعادة التشغيل هو

sudo chmod 777 /dev/shm

هذا حل مشكلتي.

تظهر لي رسالة خطأ عند محاولة تنفيذ برنامج 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

يبدو أن المستخدم ليس لديه إذن للوصول إلى الذاكرة المشتركة. عند التنفيذ بامتيازات الجذر ، يعمل بشكل جيد.

هل هناك أي حل لتشغيله كمستخدم عادي (وليس الجذر)؟

Python الإصدار 2.6.2 ، نظام التشغيل هو Linux 2.6.18 (CentOS الإصدار 5.4) وهو جهاز VPS.


في OVH VPS Classic ، حدث هذا الخطأ بسبب حلقة في / dev / shm و / run / shm. كلاهما كانا يرتبطان ببعضهما البعض. لذلك الجذر هنا هو ما فعلته:

# 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

أتمنى أن يساعدك هذا :-)







linux