当我尝试启动“screen”或“byobu”时,出现以下错误消息:
$ screen
No more PTYs.
Sorry, could not find a PTY.
[screen is terminating]
但我似乎已经足够了:
$ ls /dev/pts
$ cat /proc/sys/kernel/pty/nr
0
$ cat /proc/sys/kernel/pty/max
4096
更多信息:
$ uname -a
Linux cube.mydedi.net 2.6.18-194.8.1.el5.028stab070.5 #1 SMP Fri Sep 17 19:10:36 MSD 2010 x86_64 x86_64 x86_64 GNU/Linux
如果您需要更多信息,请发表评论。这是在低端 VPS 上,但它曾经运行良好,直到它停止工作。不过其他一切似乎都很好。
答案1
pty 为零的情况是不寻常的,因为您使用的 SSH 连接本身就已分配了一个 pty。
确保已经devpts
安装:
$ grep /dev/pts /proc/mounts
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620 0 0
如果不是:
# mount devpts /dev/pts -t devpts -o mode=620
答案2
我遇到了类似的问题,但我的问题出现在我启动系统内的 LXC 容器时(停止它没有帮助)。结果是,当 screen(在我的基础系统中)试图打开一个新的 PTY 时,它打开了一个已经存在的 PTY,并且无法更改其所有权。
这很奇怪,但最明显的地方是 /dev/pts 挂载点,所以我只是重新挂载了它:
# mount -o remount /dev/pts
问题就解决了。重新安装后,我没有从 /dev/pts“丢失”任何 PTY 设备,因此这似乎是一个非常安全的操作。
答案3
我遇到了类似的问题,但问题在于 /dev/pt* 设备的权限错误。
不确定为什么它们被设置为 600,所以只有 root 可以使用屏幕,我将其更改为 666 并且它适用于其他用户。