小编stu*_*net的帖子

Linux 中是否有等待终止的命令?

我正在尝试构建一个 Windows 批处理文件,它以端口转发启动 putty/plink,仅此而已。到目前为止,Windows 部分已准备就绪:

start plink.exe -ssh -i key.ppk -L 1234:localhost:80 sampleUser@192.168.0.1
Run Code Online (Sandbox Code Playgroud)

因为我不希望允许执行身份验证之后其他命令,我使用ForceCommandMatch User声明:

Match User sampleUser
    ForceCommand echo 'Success! Close this window to log out.'
Run Code Online (Sandbox Code Playgroud)

问题是,运行我的批处理文件会正确启动 putty,但在执行回显我指定的文本后它会立即关闭。

我的想法是使用这样的东西:

ForceCommand echo 'Success! Close this window to log out.' && waitTillControlC
Run Code Online (Sandbox Code Playgroud)

这样,putty/SSH 应该保持连接有效并且不会退出我的端口转发。

我想过像yes, pingor 之类的命令read,但它们

  • 正在向我的终端窗口发送垃圾邮件
  • 实际上是在做事/产生不必要的 CPU 负载
  • 可能会意外关闭,如果有人按 Enter

是否有一个命令永远不会做任何事情,直到有人用 Ctrl+C 终止它或通过关闭腻子窗口来关闭 SSH 连接?

我应该用来做waitTillControlC什么?

linux ssh terminal bash putty

11
推荐指数
3
解决办法
3631
查看次数

为什么正在运行的 ping 进程在互联网中断期间继续工作,但重新启动 ping 却不能?

在过去的几个月里,我一直在与定期的互联网中断作斗争,这影响了我本地网络上的所有设备,迫使我重新启动电缆调制解调器。今天我注意到,通过安装暴雪 Battle.net 游戏,我可以重现此问题 - 或具有相同症状的类似问题。

这不仅仅是为了让我的带宽饱和,因为

  • 下载本身也会停止,
  • 限制下载速度时也会发生这种情况,
  • 暂停下载时它不会自动解决 - 只有重新启动调制解调器才有帮助。

为了准确地查看我的互联网连接何时失败,我ping 8.8.8.8在连接到同一网络的单独 Linux 笔记本(我使用的是 Arch btw)上运行一个简单的程序 - 但即使我的互联网失败,我仍然能够继续执行 ping 操作!仅当停止正在运行的ping并重新启动它时,我才不再收到任何响应。

我对这种行为有点困惑。我还尝试并排运行ping 8.8.8.8-watch -n1 ping -c 1 8.8.8.8虽然持续运行的ping进程继续工作,但一旦我的互联网出现故障,由watch定期重新启动的ping进程就会失败。

这怎么可能?显然,“活动 ping 会话”似乎不受我的中断影响。但是对于在第 3 层使用 ICMP 执行 ping 操作,我不明白为什么保持ping运行与重新启动之间存在差异。

在看到 Battle.net 下载也导致这个问题后,我立即怀疑与太多 P2P 连接堵塞我的路由器有关。但我既不确定 Battle.net 是否真的使用 P2P,也没有在我的路由器上看到任何关于活动连接(最多 15,360 个连接中的约 3,000 到 4,000 个连接)、内存使用等方面的可疑内容。

不幸的是,我无法真正查看电缆调制解调器的指标,因为我的 ISP 没有提供适当的接口 - 这也是我在桥接模式下运行它的原因。

这种行为有什么解释吗?

编辑:我使用 Wireshark 查看了 ICMP 消息:获得响应的 ICMP 回显请求与未获得响应的 ICMP …

networking linux router ping cable-modem

4
推荐指数
1
解决办法
484
查看次数

标签 统计

linux ×2

bash ×1

cable-modem ×1

networking ×1

ping ×1

putty ×1

router ×1

ssh ×1

terminal ×1