Upstart

nc 作為新貴作業執行時,在連接時立即退出

  • October 5, 2017

我正在使用以下/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

問題是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

但是,您似乎正在使用不是為這項工作設計的工具。nc我建議您使用 syslog 協議和設計用於該協議的記錄器,而不是使用。

引用自:https://serverfault.com/questions/754705