我错误地运行了以下命令:
cat /dev/urandom
并且控制台(托管在 Windows 上)充满了垃圾并且停止响应Ctrl-Z或其他任何东西。
有什么方法可以恢复控制台吗?
答案1
首先,我想强调的是不同之处介于ctrl+z和ctrl+之间c:
- ctrl+z将 SIGTSTP 发送到前台进程,实际上将其置于后台 - 在这种情况下并不合适。
- ctrl+c发送 SIGINT 将会中断该进程,这是您应该首先尝试的。
更多有关信号的信息,请访问man 7 signal
。
有时仅仅关闭终端窗口并不是最好的解决方案,因为您将丢失对您来说很重要的近期历史记录。
通过打开另一个终端窗口(或真实 Linux 上的 TTY),您可以尝试cat
使用以下任一命令来终止该进程。
killall -s 9 cat
该命令killall
按名称终止进程,并尝试终止所有cat
进程。该选项-s 9
将发送 SIGKILL 而不是 SIGTERM,可以理解为强制终止. 大多数情况下这killall cat
就够了。
kill -9 $(ps -e | awk '/cat/ {print $1}')
该命令kill
将向进程发送信号,通过选项,-9
我们将像上面的命令一样发送 SIGKILL,但在这里我们必须提供 PID(进程标识符)而不是名称。命令替换$()
将提供系统上运行的所有进程的列表cat
。以下是 haw:
ps -e
将列出系统上所有正在运行的进程,- 该列表将
|
作为awk
命令的输入, - 最后将通过打印包含字符串的每一行的
awk '/cat/ {print $1}'
第一个字段来过滤列表。第一个字段包含相关进程的 PID。$1
cat
请注意,您不需要使用这两个命令,sudo
因为通常您的用户应该是该进程的所有者cat
。