我有一台 Ubuntu Server 18.04。我设置了一个 VNC 连接 - 也就是说,我安装了 GNOME,它有一个图形界面。我通过 SSH 连接,启动 vncserver,然后连接到 VNC。
当我打开终端时出现以下错误:
There was an error creating the child process for this terminal. Failed to open PTY: Permission denied.
我该如何解决这个问题?
的输出cat /proc/sys/kernel/pty/max /proc/sys/kernel/pty/nr
是
4096
2
答案1
对我来说,运行以下命令可以修复终端:
sudo chmod 666 /dev/pts/ptmx
答案2
它可能是因为ptsfs
没有运行。
检查ptsfs
正在进行
mount | grep pts
你应该看到类似这样的内容
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
如果ptsfs
没有运行则以 root 身份手动挂载
$ sudo mount -t devpts devpts /dev/pts
并将以下行添加到/etc/fstab
devpts /dev/pts devpts gid=5,mode=620 0 0
这个答案背后的原因解释如下,gnome-terminal:为该终端创建子进程时出错,
此问题与 devpts(也称为 Unix98 pty 命名)文件系统有关。devpts 必须安装在 /dev/pts 上。在打开伪终端从属之前,您或进程必须传递主终端的文件描述符。从手册页中:
minor number 2, usually of mode 0666 and owner.group of root.root. It is used to create a pseudo-terminal master and slave pair. When a process opens /dev/ptmx, it gets a file descriptor for a pseudo-terminal master (PTM), and a pseudo-terminal slave (PTS) device is created in the /dev/pts directory.
值得一提的是,上述“gnome-terminal”链接来自 Mint 错误数据库上记录的一个不相关的 gnome-terminal 错误,为此终端创建子进程时出错然而,那略有不同:
There Was An Error Creating The Child Process For This Terminal
Text was empty or contained only white spaces
此问题也出现在 Ubuntu 上,如 Ask Ubuntu 上所述,我如何重新启动终端?。
解决方案可以要么
解决问题的方法:单击配置文件首选项框,取消勾选“运行自定义命令”。退出。关闭终端并重新启动。就是这样。
或答案我如何重新启动终端?
但是,由于这个错误与您的问题不同,因此可能不应考虑。我之所以提到它,是因为这是我发现 gnome-terminal ptsfs 问题/解决方案的方式。
答案3
我遇到了类似的问题,但我怀疑 Docker 是罪魁祸首。
我重启了机器,登录后,我点击Ctrl+ Alt+F3切换到控制台。然后我停止了所有正在运行的容器,删除了所有容器,删除了所有图像,然后重启。
随后终端又开始工作,尽管我仍然收到 Xorg 的奇怪的崩溃报告。
答案4
这是针对此问题进行搜索时最热门的话题,因此我分享了我的经验。
就我而言,这个问题突然出现了。根据其他答案,可以将 ptmx 文件的模式更改为 666,并解决问题,直到重新启动。还可以向 fstab 添加挂载命令,但一定要包含 ,ptmxmode=666。这解决了持久性问题。但为什么会发生这种情况。我从来没有在我的 fstab 中添加过这样的挂载。@dwbailey 上面的另一篇帖子就是线索。事实证明,正在运行的 docker 容器(我想格式不正确)可能会干扰 ptsfs。
https://github.com/moby/moby/issues/19464
在我出现此问题之前,我曾使用 docker-compose 启动了一个容器来评估一个项目。该容器在启动时重新启动,这解释了为什么重新启动无法解决此问题,但是一旦我将其带入,down
此问题就消失了。
因此提示是,如果您最近启动了一个容器并且这个问题“突然出现”,那么最有可能是那个容器。