终端 Ctrl+s 与 Ctrl+z

终端 Ctrl+s 与 Ctrl+z

例如,我有一个长时间运行且冗长的tar cvf /backup/backup.tar命令,它会向屏幕输出大量文本*。我不一定想一直看到所有的输出。我想停止文本输出,做其他事情,然后返回并“恢复”以查看备份过程进行了多远。我期望它的行为像

/files/big_file_1
/files/big_file_2
/files/big_file_3
# Ctrl+s
# Do other stuff
# Ctrl+q , notice big jump in progress
/home/user/.bash_history
/home/user/small_file_1
/home/user/small_file_2
/home/user/small_file_3
...

Ctrl+s 停止输出到屏幕(Ctrl+q 恢复输出到屏幕),而 Ctrl+z 暂停进程,然后我回到 PS1 提示符。我的问题是,Ctrl+s 是否能让命令保持运行?

在上述tar命令中,我会突出显示最后一个文件 TARred 让它静置几分钟,Ctrl+q,接下来的文件似乎位于同一目录中,或者至少位于相对较近的目录中。

*我在 Windows 上使用 Putty,因此如果其行为与 Linux/Unix 上的标准终端不同,我深表歉意。

答案1

我的问题是,Ctrl+s 是否能让命令保持运行?

是的,直到系统缓冲区填满,并且进程开始阻塞才能写入终端。所以,它不会无限期地运行。另外,由于输出被阻止,您将无法在同一终端中运行任何其他内容。

要退出该计划,同时仍然可以返回,可以选择:

  • 侧面运行另一个终端(另一个 Putty,另一个 SSH 连接)
  • 运行screentmux在同一终端内复用多个“窗口”
  • 将输出重定向到文件,在后台运行命令,然后在需要时查看该文件tar cvf ... > /tmp/tar.out &tail /tmp/tar.out

相关内容