当我尝试以非 root 用户身份运行屏幕时,我得到:
screen
[screen is terminating]
立即,尽管对于 root 来说它可以正常工作
ls -alh /usr/bin/screen
-rwxr-sr-x 1 root screen 465K Jun 9 20:30 /usr/bin/screen
当我在 Google 上搜索时,我注意到提到了 /etc/fstab,这是我的:
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/md1 / ext4 errors=remount-ro 0 1
/dev/md2 /home ext4 defaults 1 2
/dev/sda3 swap swap defaults 0 0
/dev/sdb3 swap swap defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts defaults 0 0
这是在通过 ssh 访问的专用服务器上新安装的 centos 7(TTY 是 pts)
任何帮助,将不胜感激。
screen -ls
No Sockets found in /var/run/screen/S-user.
ls -la /var/run/screen/S-user
total 0
drwx------ 2 user user 40 Jul 10 18:23 .
drwxrwxr-t 4 root screen 80 Jul 10 17:59 ..
答案1
我在专用 CentOS 7 服务器上遇到了这个问题,并找到了此错误报告中描述的修复方法: bugs.centos.org/view.php?id=7395
这是在 Dedicated 上向gid=5
fstab 中添加 devpts 的一个很好的解决方案。screen
现在所有用户都可以按预期工作。
但是,当我尝试解决 CentOS 7 的 OpenVZ 容器上的问题时,我遇到了这个线程。由于没有办法编辑服务器的 fstab(据我所知),我发现以下解决方法可以解决问题。
我想我会通过这种方式回来看看它是否可以帮助其他人。 (尽管这不是一种很漂亮的做法。)
在终端:
chmod u+s /usr/bin/screen
chmod 755 /var/run/screen
答案2
确保没有其他人screen
正在使用该设备
这可以通过以下方式实现如何确定 Linux 中哪个进程打开了文件?:
sudo lsof /dev/ttyS0
如果是这种情况,则终止该进程。
由于某种原因,在这种情况下,sudo screen
仍然可以访问该设备,但该连接将错过被其他设备占用的字符screen
。
确保用户具有该文件的读写权限
例如在 Ubuntu 上你想将用户添加到dialout
组:https://askubuntu.com/a/133244/52975
答案3
这可能是你的配置文件中的一个错误
~/.screenrc
尝试检查它或者创建一个暗淡的。