Câu trả lời:
Tìm thấy một giải pháp không yêu cầu sudo thường xuyên khi khởi động lại
Từ 'Eric Z Ma' @ systutorials :
Thư mục
/var/run/screen/
là thư mục socket cho màn hình.May mắn thay, màn hình đọc một biến môi trường
SCREENDIR
để có được một thư mục socket thay thế.Vì vậy, để làm việc xung quanh nó, bạn có thể tạo một thư mục, chẳng hạn như
~/.screen
:mkdir ~/.screen && chmod 700 ~/.screen
và xuất
SCREENDIR
để trỏ đến thư mục đó:export SCREENDIR=$HOME/.screen
Bạn cũng có thể đặt dòng này vào bạn
~/.bashrc
để nó cũng có hiệu lực sau đó.
Vấn đề này đã được ghi nhận ở đây . Nói ngắn gọn,
/etc/rcS.d/S70screen-cleanup
đang chạy qua khởi động sớm hơn nhiều so với dự kiến sẽ chạy và không thể dọn sạch thư mục đó một cách chính xác.
Nó có thể được sửa bằng lệnh sau
sudo /etc/init.d/screen-cleanup start
Tôi đã gặp phải điều này trong khi chạy một bản phân phối dựa trên Centos / RHEL 7 và nó không có bất kỳ thứ gì có tên là 'dọn dẹp màn hình' ở bất cứ đâu dưới / etc.
Một cách giải quyết tôi tìm thấy là chỉ cần chạy sudo screen
và sau đó ngay lập tức thoát khỏi nó.
Sau đó, tôi đã có thể chạy màn hình mà không có bất kỳ đặc quyền đặc biệt nào, vì vậy nó xuất hiện để dọn sạch / var / run ngay lập tức khi có cơ hội.
Tôi có thể khắc phục vấn đề này bằng cách thực hiện các lệnh sau.
sudo mkdir /var/run/screen
sudo chmod 777 /var/run/screen
TL; DR : Trong Debian Stretch và mới hơn, hãy đảm bảo rằng nó systemd-tmpfiles-setup.service
đã được khởi động thành công:
$:> 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
...
Nếu bị tắt ( Loaded: ... ;disabled; ...
) thì bạn có thể muốn bật nó với systemctl enable systemd-tmpfiles-setup.service
. Nếu bạn muốn sử dụng màn hình trong một container docker thì bạn phải chạy systemd trong hình ảnh container của bạn hoặc bạn phải chạy systemctl start systemd-tmpfiles-setup.service
hoặc /etc/init.d/screen-cleanup start
( như được đề xuất bởi Huey ) mỗi lần sau khi đăng nhập vào container của bạn.
Chi tiết: Vì Debian Stretch, tập lệnh khởi động /etc/init.d/screen-cleanup
không được thực thi, vì theo mặc định, dịch vụ này bị che ( /lib/systemd/system/screen-cleanup.service -> /dev/null
), vì vậy systemd bỏ qua nó.
Thay vào đó systemd-tmpfiles-setup.service
tạo /run/screen
khi khởi động, như được cấu hình trong /usr/lib/tmpfiles.d/screen-cleanup.conf
:d /run/screen 0775 root utmp
systemctl enable systemd-tmpfiles-setup.service
@ Hủy bỏ mà @Jacob đề nghị vẫn tồn tại trên các lần khởi động lại.