Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ';nc&x27;即使使用-k选项,命令也会停止_Linux_Netcat - Fatal编程技术网

Linux ';nc&x27;即使使用-k选项,命令也会停止

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协议固有的问题,我的观点是他们没有正确的答案[但这只是我的观点] 如果您

我试图连续收听端口5000并打印第一行消息,但程序在一次迭代后停止。我正在使用下面的命令-

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)
我认为这些工具对于生产环境来说不够稳定,尽管它们可能非常有趣。:-)