我正在启动这样的 ssh 隧道:
ssh -f -N $PORT:127.0.0.1:$port example.com
Run Code Online (Sandbox Code Playgroud)
在-f
放ssh到后台,这就是我想要的。这是有效的,因为设置了 SSH 隧道。但是如果我使用,jobs
我看不到列出的 ssh 连接。怎么来的?
ssh 进程可能已被守护进程,与 shell 断开连接。你可以这样想(但可能不是按这个顺序):
您启动的“ssh”进程实际上关闭了所有文件描述符(stdin、stdout、stderr),与 tty 断开连接,并分叉了另一个子 ssh。然后自行调用 exit 。这会孤立子进程,而原始 ssh 进程实际上“完成”。
因此,原始 ssh 进程已完成,孤立进程不再是 shell 的“子进程”。
使用“ps -ef”或“ps -fu$USER”来查看您感兴趣的 ssh 进程。
因为您没有使用 bash 将其发送到后台。jobs
只报告 bash 本身发送到后台的进程;正如 ericslaw 所说,是 ssh 本身“守护”了它。要让工作报告它,你会这样做:
ssh -N $PORT:127.0.0.1:$port example.com &
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
713 次 |
最近记录: |