我通过在本地 shell 中运行此命令来跟踪远程日志文件:
ssh remotemachine tail -100f /path/to/error_file
Run Code Online (Sandbox Code Playgroud)
当我 ctrl-c 退出此命令时,似乎 ctrl-c 会终止本地 ssh 进程并使我的尾巴在远程计算机上运行。我的印象是断开连接会发送挂断信号(因为我没有使用 nohup)并终止进程,但显然情况并非如此。
任何人都可以更清楚地了解何时发送挂断信号以及何时不发送?远程机器是 Ubuntu,我的本地 shell 是 OS X bash,如果其中任何一个有所不同。
小智 14
这种行为源于缺少运行进程的控制终端。当远程进程没有控制终端时,处理您的会话的远程 ssh 进程无法终止该命令,该命令处于僵死状态,最终由 init 清除。
您可以通过使用 -t 选项运行它来解决此问题,该选项为其提供了一个控制终端。当您远程 ctrl-c ssh 命令时,这将导致进程终止。
该-t选项:
强制伪 tty 分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个 -t 选项强制 tty 分配,即使 ssh 没有本地 tty。
使用此选项时请查看man ssh和man sshd,因为控制终端还有其他含义,例如发送转义字符的能力。
| 归档时间: |
|
| 查看次数: |
10229 次 |
| 最近记录: |