いつか、通常はクラッシュまたは突然のシャットダウンの後、 screen
は起動を拒否します。のようなコマンド
screen
screen -ls
screen -r
screen -d
次の出力になります
ディレクトリ '/ var/run/screen'を作成できません:権限が拒否されました
ここの問題は何ですか?どうすれば修正できますか?
再起動時に通常のSudoを必要としないソリューションを見つけた
'Eric Z Ma' @ systutorials から:
ディレクトリ
/var/run/screen/
は、画面のソケットディレクトリです。さいわい、screenは環境変数
SCREENDIR
を読み取り、代替ソケットディレクトリを取得します。したがって、これを回避するには、
~/.screen
などのディレクトリを作成します。mkdir ~/.screen && chmod 700 ~/.screen
そして、そのディレクトリを指すように
SCREENDIR
をエクスポートします。export SCREENDIR=$HOME/.screen
この行を
~/.bashrc
に挿入して、後で有効にすることもできます。
この問題は文書化されています ここ 。要するに、
/etc/rcS.d/S70screen-cleanup
は、実行が予想されるよりもはるかに早くupstartを介して実行されており、そのディレクトリを正しくクリーンアップできません。
次のコマンドで修正できます
Sudo /etc/init.d/screen-cleanup start
Centos/RHEL 7ベースのディストリビューションを実行しているときにこの問題に遭遇しました。/etcの下に「screen-cleanup」という名前のものがありません。
私が見つけた回避策は、単にSudo screen
し、すぐに終了します。
その後、特別な権限なしでscreenを実行することができたため、チャンスが与えられたときに/ var/runを適切にクリーンアップしたようです。
以下のコマンドを実行することでこの問題を解決できます。
Sudo mkdir /var/run/screen
Sudo chmod 777 /var/run/screen
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
で有効にすることができます。 docker container 内でscreenを使用する場合は、- systemd running in your container image を取得するか、systemctl start systemd-tmpfiles-setup.service
または/etc/init.d/screen-cleanup start
( asコンテナにログインした後は毎回Hueyによって提案されました )。
詳細: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