UNIX 在键入某些命令(例如 CAT)后进入不可用模式

UNIX goes into unusable mode after typing certain commands such as CAT

我是 UNIX 的新手,因此在适用于 UNIX 的 Oracle SOLARIS 11 虚拟操作系统上遇到了一些小问题。

问题是,在我键入某些命令(例如 CAT 等)后,UNIX 命令行进入无法使用的模式,此后没有新的命令起作用,直到您用鼠标手动关闭终端并再次重新启动。

我想知道一种方法,即使我键入 CAT 之类的命令(这会使下一个命令不起作用),我也可以立即继续使用下一个语句,而无需关闭整个终端并再次重新启动.尊重您宝贵的时间

我有一张截图可以让你更容易理解我的问题:

Ctrl + C 杀猫进程。 Cat 需要来自标准输入的用户输入,这就是进程不会停止的原因,除非您明确声明要停止它。

查看 Unix signals 了解更多信息。

对于这种实际上您没有正确处理命令并导致您的终端进入不可用模式的特殊情况,Sevle 提供的答案可以帮助您。

我的回答是针对这样一种情况:您以正确的格式输入了正确的命令,命令开始执行,现在命令需要很长时间才能完成并返回终端。在您事先知道某些命令可能需要很长时间才能完成的情况下,请执行以下操作

<command> &

它的作用是启动命令,然后将命令生成的进程推送到后台,这样您就可以取回终端进行后续工作,而无需等待命令完成。上面的命令将为您 return 您提供一个进程 ID,如果需要,您可以使用它再次将进程带到前台。

在执行附加了“&”字符的命令后返回终端后,使用命令

ps

获取当前正在执行的所有进程的列表。您将在您的机器中看到当前 运行 的进程,包括您的命令的进程。您可以使用此列表中的进程 ID 或命令被触发后 return 值 returned 中的进程 ID,使进程进入前台。为此使用以下命令 -

fg

如前所述,Unix 不会进入不可用状态,而只会执行您要求它执行的操作。这里 cat 正在读取它的标准输入(键盘)并在其标准输出(终端)上不做进一步处理就显示它。

有许多其他标准 Unix 实用程序读取其标准输入并写入其标准输出,这是在 Unix 哲学下从简单命令构建复杂命令的最常见方式。结束进程更简洁的方法是输入文件结束字符,通常是 Control+D.

同时 Control+CControl+D 将把命令行的控制权还给你,在后一种情况下,进程不会被打断,只是简单地结束,因为它没有更多可读的内容。

或者,如果您不想结束该进程但无论如何都想恢复 shell 控制,您通常可以暂停 运行 进程,并可能稍后将其置于后台.您可以使用 Control+Z 然后使用 bg 命令。

另请注意,有时进程会忽略 Control+C,如果 Control+D也不行,你可以尝试发送更强的quit信号,通常用Control+\,除了中断程序之外,它还会将其二进制映像转储到文件(核心)中以供以后调试。