ไม่สามารถสร้างไดเรกทอรี '/ var / run / screen': ปฏิเสธสิทธิ์การใช้งาน


26

บางครั้งโดยปกติหลังจากการชนหรือหยุดทำงานกะทันหันscreenปฏิเสธที่จะเริ่ม คำสั่งเช่น

screen
screen -ls
screen -r
screen -d

ผลลัพธ์ในผลลัพธ์ต่อไปนี้

ไม่สามารถสร้างไดเรกทอรี '/ var / run / screen': ปฏิเสธสิทธิ์การใช้งาน

มีปัญหาอะไรที่นี่ ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


35

พบวิธีแก้ปัญหาที่ไม่ต้องใช้ sudo ปกติเมื่อรีสตาร์ท

จาก'Eric Z Ma' @ 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
ใช้งานได้ แต่ฉันต้องเรียกใช้ทุกครั้งที่เริ่มต้นมิฉะนั้นฉันจะได้รับข้อผิดพลาดซ้ำแล้วซ้ำอีก
Krease

3

ฉันพบปัญหานี้ในขณะที่ใช้ Centro / RHEL 7 based distro และมันไม่มีอะไรที่ชื่อว่า 'การล้างหน้าจอ' ที่ใดก็ได้ภายใต้ / etc

วิธีแก้ปัญหาที่ฉันพบคือเพียงเรียกใช้sudo screenแล้วออกจากทันที

หลังจากนั้นฉันสามารถเรียกใช้หน้าจอโดยไม่มีสิทธิ์พิเศษใด ๆ ดังนั้นจึงปรากฏขึ้นเพื่อล้าง / var / run ปรากฏขึ้นอย่างน่ากลัวเมื่อได้รับโอกาส


1

ฉันสามารถแก้ไขปัญหานี้ได้โดยการดำเนินการคำสั่งต่อไปนี้

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

1
นี่ไม่ใช่ทางออกที่ดี ทุกครั้งที่คุณรีสตาร์ทคุณต้องทำซ้ำ
arupgsh

0

TL; DR : ใน Debian Stretch และใหม่กว่าตรวจสอบให้แน่ใจว่า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แล้วคุณอาจต้องการที่จะเปิดใช้งานได้ด้วย หากคุณต้องการใช้หน้าจอภายในคอนเทนเนอร์นักเทียบท่าคุณจะต้องเรียกใช้ systemd ในอิมเมจคอนเทนเนอร์ของคุณหรือคุณต้องเรียกใช้systemctl start systemd-tmpfiles-setup.serviceหรือ/etc/init.d/screen-cleanup start( ตามที่ฮิวอี้แนะนำ ) ทุกครั้งหลังจากเข้าสู่คอนเทนเนอร์ของคุณ

รายละเอียด:ตั้งแต่ Debian Stretch สคริปต์เริ่มทำงาน/etc/init.d/screen-cleanupจะไม่ถูกเรียกใช้เนื่องจากโดยค่าเริ่มต้นบริการนี้จะถูกปิดบัง ( /lib/systemd/system/screen-cleanup.service -> /dev/null) ดังนั้น systemd จะข้ามไป

systemd-tmpfiles-setup.serviceสร้างแทน/run/screenเมื่อบูตตามที่กำหนดไว้ใน/usr/lib/tmpfiles.d/screen-cleanup.conf:d /run/screen 0775 root utmp


ดูเหมือนว่าคุณ (เช่น) แนะนำขั้นตอนที่ OP จะต้องดำเนินการ (ด้วยตนเอง) หลังจากรีบูตทุกครั้ง คุณสามารถนำเสนอโซลูชั่นถาวรซึ่งจะต้องทำเพียงครั้งเดียว? กรุณาอย่าตอบในความคิดเห็น; แก้ไขคำตอบของคุณเพื่อให้ชัดเจนและสมบูรณ์ยิ่งขึ้น
สกอตต์

@Scott systemctl enable systemd-tmpfiles-setup.serviceที่ @Jacob แนะนำคงอยู่ตลอดการรีบูต
Tagar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.