निर्देशिका '/ var / run / स्क्रीन' नहीं बना सकता: अनुमति से इनकार किया


26

शायद ही कभी, दुर्घटना या अचानक बंद होने के बाद, screenशुरू करने से इनकार कर देता है। जैसी आज्ञा देता है

screen
screen -ls
screen -r
screen -d

निम्नलिखित आउटपुट में परिणाम

निर्देशिका '/ var / run / स्क्रीन' नहीं बना सकता: अनुमति से इनकार किया

यहाँ क्या समस्या है? मैं इसे कैसे ठीक करूं?

जवाबों:


37

एक समाधान है कि पुनरारंभ पर नियमित sudo की आवश्यकता नहीं है पाया

से 'एरिक जेड मा' @ systutorials :

निर्देशिका /var/run/screen/स्क्रीन के लिए सॉकेट निर्देशिका है।

सौभाग्य से, स्क्रीन SCREENDIRएक वैकल्पिक सॉकेट निर्देशिका प्राप्त करने के लिए एक पर्यावरण चर पढ़ता है ।

तो इसके चारों ओर काम करने के लिए, आप एक निर्देशिका बना सकते हैं, जैसे ~/.screen:

mkdir ~/.screen && chmod 700 ~/.screen

और SCREENDIRउस निर्देशिका को इंगित करने के लिए निर्यात करें :

export SCREENDIR=$HOME/.screen

आप इस लाइन को अपने अंदर भी डाल सकते हैं ~/.bashrcताकि बाद में यह भी प्रभावी हो जाए।


25

इस मुद्दे को यहाँ प्रलेखित किया गया है । संक्षेप में,

/etc/rcS.d/S70screen-cleanup इससे पहले कि यह चलाने की उम्मीद की तुलना में बहुत ऊपर से चल रहा है, और उस निर्देशिका को सही ढंग से साफ करने में विफल हो रहा है।

यह निम्नलिखित कमांड के साथ तय किया जा सकता है

sudo /etc/init.d/screen-cleanup start

1
यह काम करता है, लेकिन मुझे इसे प्रत्येक स्टार्टअप पर चलाना होगा, अन्यथा मुझे बार-बार त्रुटि मिलेगी।
क्रीज

3

मैं सेंटोस / आरएचईएल 7 आधारित डिस्ट्रो चलाते समय इसमें भाग गया, और इसके तहत कहीं भी 'स्क्रीन-क्लीनअप' नाम की कोई चीज नहीं है।

मेरे द्वारा पाया गया वर्कअराउंड केवल चलाने के लिए था sudo screenऔर फिर तुरंत इससे बाहर निकल गया।

उसके बाद मैं बिना किसी विशेष विशेषाधिकार के स्क्रीन चला पा रहा था, इसलिए यह मौका दिए जाने पर अप / वर / अप को क्लीन अप करने के लिए प्रकट होता है।


1

मैं निम्नलिखित आदेशों को निष्पादित करके इस समस्या को ठीक कर सकता हूं।

sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen

1
यह एक अच्छा उपाय नहीं है। हर बार जब आप पुनरारंभ करते हैं तो आपको इसे फिर से करना होगा।
अरूपगश

0

टीएल; डीआर : डेबियन स्ट्रेच और बाद में, सुनिश्चित करें कि systemd-tmpfiles-setup.serviceसफलतापूर्वक शुरू किया गया है:

$:> systemctl status systemd-tmpfiles-setup.service
● systemd-tmpfiles-setup.service - Create Volatile Files and Directories
   Loaded: loaded (/lib/systemd/system/systemd-tmpfiles-setup.service; static; vendor preset: enabled)
   Active: active (exited) since Thu 2018-06-21 19:54:06 CEST; 41min ago
   ...

यदि अक्षम ( Loaded: ... ;disabled; ...) है, तो आप इसे सक्षम करना चाहते हैं systemctl enable systemd-tmpfiles-setup.service। यदि आप एक डॉकटर कंटेनर के भीतर स्क्रीन का उपयोग करना चाहते हैं तो आपको या तो अपने कंटेनर इमेज में सिस्टमड रनिंग प्राप्त करनी होगी या आपको अपने कंटेनर में लॉग इन करने के बाद हर बार systemctl start systemd-tmpfiles-setup.serviceया /etc/init.d/screen-cleanup start( ह्यु द्वारा सुझाए गए अनुसार ) चलना होगा ।

विवरण: डेबियन स्ट्रेच के बाद से, स्टार्टअप स्क्रिप्ट /etc/init.d/screen-cleanupको निष्पादित नहीं किया जाता है, क्योंकि डिफ़ॉल्ट रूप से यह सेवा मुखौटा ( /lib/systemd/system/screen-cleanup.service -> /dev/null) है, इसलिए सिस्टमड इसे अनदेखा करता है।

इसके बजाय बूट पर systemd-tmpfiles-setup.serviceबनाता /run/screenहै, जैसे में कॉन्फ़िगर किया गया है /usr/lib/tmpfiles.d/screen-cleanup.conf:d /run/screen 0775 root utmp


ऐसा लगता है कि आप एक ऐसी प्रक्रिया का सुझाव दे रहे हैं, जिसे ओपी को हर रिबूट के बाद (मैन्युअल रूप से) करना होगा। क्या आप एक स्थायी समाधान की पेशकश कर सकते हैं, जिसे केवल एक बार करने की आवश्यकता होगी? कृपया टिप्पणियों में प्रतिक्रिया न दें; इसे स्पष्ट और अधिक पूर्ण बनाने के लिए अपना उत्तर संपादित करें।
स्कॉट

@Scott systemctl enable systemd-tmpfiles-setup.serviceकि @Jacob रिबूट भर कायम सुझाव दिया।
तगार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.