例如,我有一个长时间运行且冗长的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 连接)
- 运行
screen
或tmux
在同一终端内复用多个“窗口” - 将输出重定向到文件,在后台运行命令,然后在需要时查看该文件
tar cvf ... > /tmp/tar.out &
:tail /tmp/tar.out