fad*_*bee 2 netcat upstart stdin nc
我正在使用以下/etc/init/jsonlog.conf新贵工作:
description "jsonlog"
start on runlevel [23]
stop on runlevel [06]
respawn
script
cd /tmp
echo "about to listen"
/bin/nc -l 3333
echo "finished listening"
end script
post-stop script
sleep 1
end script
Run Code Online (Sandbox Code Playgroud)
问题是nc每次客户端连接时都会立即退出。
所需的行为是接收到的所有数据(即 utf8 json)应以/var/log/upstart/jsonlog.log. 该服务器运行的是 Ubuntu 12.04LTS。
nc从 bash shell 运行时该命令可以正常工作。
我假设这与stdin. 我尝试过使用一个-q -1选项,但没有帮助。
PS 我很满意这样一个事实,即它一次只会听一个客户。
我发现你的命令有两个问题nc。您正在nc以一种用于双向通信的方式进行调用,并期望它执行单向通信。
该-d标志可以停止nc读取,从而stdin使其进行单向通信,而这似乎是您正在尝试进行的。
另一个问题是nc -l默认情况下仅服务单个连接然后终止。您可以使用该-k标志来更改该行为。
总而言之,命令变成:
nc -dkl 3333
Run Code Online (Sandbox Code Playgroud)
然而,您似乎使用的工具并非专为该工作而设计。nc我建议您使用 syslog 协议和设计用于该协议的记录器,而不是使用它。
| 归档时间: |
|
| 查看次数: |
19350 次 |
| 最近记录: |