Linux ';nc&x27;即使使用-k选项,命令也会停止
我试图连续收听端口5000并打印第一行消息,但程序在一次迭代后停止。我正在使用下面的命令-Linux ';nc&x27;即使使用-k选项,命令也会停止,linux,netcat,Linux,Netcat,我试图连续收听端口5000并打印第一行消息,但程序在一次迭代后停止。我正在使用下面的命令- nc -k -l 5000 | head -n 1 我在nc中使用了-k选项,但在一次迭代后程序仍然停止。这个命令有什么问题?它不是那么简单。第二次nc只能在前一次完全运行后启动。但是它无法做到,因为nc有一个bug:它无法检测远程端是否关闭了它的套接字。因此,第一个nc从未停止,因此第二个nc无法启动 nc的开发人员说,这是TCP协议固有的问题,我的观点是他们没有正确的答案[但这只是我的观点] 如果您
nc -k -l 5000 | head -n 1
我在nc中使用了-k选项,但在一次迭代后程序仍然停止。这个命令有什么问题?它不是那么简单。第二次
nc
只能在前一次完全运行后启动。但是它无法做到,因为nc
有一个bug:它无法检测远程端是否关闭了它的套接字。因此,第一个nc从未停止,因此第二个nc无法启动
nc
的开发人员说,这是TCP协议固有的问题,我的观点是他们没有正确的答案[但这只是我的观点]
如果您想在TCP端口上执行实际的脚本侦听,一个有效的解决方案是将此head-1
放入脚本中,并从inetd调用此脚本
一些更复杂的黑客也可以工作,例如,杀死第一行之后的第一个nc
,因此:
nc -k -l 5000|(read;echo $REPLY;killall -9 nc)
我认为这些工具对于生产环境来说不够稳定,尽管它们可能非常有趣。:-)