我可以判断客户是否ssh
被暂停吗?
让我们假设我运行:
ssh server command
并在另一个窗口中
killall -STOP ssh
能command
以某种方式检测到这一点吗?我想它可以通过发送大量数据 stdout/stderr 来检测它,如果该数据阻塞,则表明客户端程序已挂起。
但是可以在不发送数据到stderr/stdout的情况下完成吗?
背景
当 GNU Parallel 运行远程作业时,这些作业会在主节点死亡时自杀。这是使用包装器完成的,并且效果很好。但如果仅暂停主服务器,则远程作业不会暂停。如果我从远程端可以检测到主服务器已挂起,那么我可以制作一个包装器来挂起作业。
答案1
不 (但可能还有另一种方法可以解决您的问题)。从客户端外部,不可能将挂起的客户端进程与正在丢弃或延迟数据包的网络链接区分开来。