![持续监听端口并将数据转储到文件](https://linux22.com/image/1395509/%E6%8C%81%E7%BB%AD%E7%9B%91%E5%90%AC%E7%AB%AF%E5%8F%A3%E5%B9%B6%E5%B0%86%E6%95%B0%E6%8D%AE%E8%BD%AC%E5%82%A8%E5%88%B0%E6%96%87%E4%BB%B6.png)
我使用此命令来监听端口并将数据转储到文件:
while : ; do nc -l 0.0.0.0 10000 > log.txt & done
第一个请求工作完美,它被转储到 log.txt 中,但是在第一个请求之后,nc 不再监听而是停止了。
有人能指出我做错什么了吗?
我只想让它在后台持续运行并将来自该端口的任何请求记录到 log.txt 文件中......
答案1
您必须添加一个选项数控。该选项取决于数控您正在运行。例如,在我的例子中 (Kubuntu),选项是-k. 从手册页中,
-k 强制 nc 在当前连接完成后继续监听另一个连接。如果未使用 -l 选项使用此选项,则会出现错误。
我不能保证-k可以(当然,除非你使用的是 Ubuntu),你必须搜索类似的内容。例如,在我的 Debian 上,-k不存在,但你发现:
-q 在标准输入上的 EOF 之后的秒数,等待指定的秒数然后退出。如果秒数为负数,则永远等待
编辑:
要检查它是否正常工作,请在一台电脑上执行以下操作:
nc -k -l 0.0.0.0 10000 > out.txt
在第二台电脑上:
echo Hello | nc IP_address_of_first_pc 10000
发出上述命令几次,然后中断数控在 pc1 上执行命令,检查 out.txt 中的行数。