在单用户模式下如何启动第二个 shell?

Sta*_*mer 14 linux shell

这听起来可能有点矛盾,但我最近在尝试重建损坏的 RAID 阵列时需要使用单用户模式(又名维护模式)一段时间(几天!)。

在执行此操作时,我发现自己想要使用第二个 shell 进行诸如检查/编辑各种配置文件中的设置或查看系统日志之类的事情,而主(也是唯一的)控制台被捆绑执行一些恢复过程。

在另一个 tty 上启动第二个 shell 的推荐命令是什么?

显然,一种方法可能是screen在 tty1 中使用,但这并不像使用 Alt-F1、Alt-F2 等切换会话那么容易。

小智 14

有一个专门针对这种情况设计的命令:openvt. 只需openvt从 tty1 上的 shell 运行,您就会发现在第一个 tty 上运行的 shell(可能是 tty2)上没有任何内容。有几个选项可能对您有用;请参阅 openvt 手册页。

由于这不是由 getty 管理的登录,因此当您退出新 shell 时,您不会看到登录提示出现。tty 会死掉,因为它上面没有运行任何进程,但是您仍然可以来回切换 (Alt-F1 Alt-F2) 并查看退出 shell 时屏幕上的内容。该deallocvt命令销毁处于这种类似僵尸状态的 tty,返回到原来的“Alt-F2 什么都不做”状态。

最初这些命令被称为openand disalloc,但最终有人决定更改它们,因为它们太通用并且 disallocate 被判断为“不是一个词”。

在过去,配置键盘驱动程序和 init 是很常见的,以便 Alt+Up 可以运行open,因此它可以充当在新控制台上生成 shell 的热键。您可能仍会在/etc/inittab. (如果你没有使用一些没有inittab. 的花哨的新初始化。)

有一个类似的问题在这里

  • 很好,我不知道 `openvt`。+1。 (3认同)

jsc*_*ott 12

您可以getty为您想要的任何 tty生成另一个。启动到单用户模式,然后getty在 tty2 上启动一个:

root@host:~# /sbin/getty 38400 tty2 &
Run Code Online (Sandbox Code Playgroud)

您现在可以Alt+F2转到新的 tty。根据需要重复其他 tty。您可能可以做一些更清洁的事情,只需配置/etc/inittab为在单用户模式下自动处理此问题。