我想使用 netcat 将多个字符串块转储到一个文件中。我一直在 Linux 终端中运行它,一切都运行良好,直到我尝试分离命令行。如果我以分离会话的形式运行命令,netcat 会在第一个字符串轮次后停止。
简而言之,这是有效的:
nc localhost 3000 > test.txt
但事实并非如此:
nc localhost 3000 > test.txt &
[1] 9040
max@starbuck ncats]$
[1]+ Stopped nc localhost 3000 > test.txt
我认为这与服务器端发送结束有关,但我对 netcat 了解不够,无法告诉它“嘿!保持清醒直到你的连接断开”
有想法吗?谢谢!
答案1
netcat 希望通过套接字发送其 stdin 并打印出响应,因此它希望它们都已连接并处于活动状态。我不知道创建永远等待的命令的好方法,但你可以尝试
sleep 86400000 | nc localhost 3000 > test.txt &
答案2
某些版本nc
支持该-d
选项(尤其是 OpenBSD 版本),它可以防止它尝试从 stdin 读取。
因此代码将变成:
nc localhost 3000 -d > test.txt &