终端错误:创建此终端的子进程时出错。无法打开 PTY:权限被拒绝

终端错误:创建此终端的子进程时出错。无法打开 PTY:权限被拒绝

我有一台 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此问题就消失了。

因此提示是,如果您最近启动了一个容器并且这个问题“突然出现”,那么最有可能是那个容器。

相关内容