2012-10-19 79 views
1

我想創建一個簡單的Linux守護進程會...Linux後臺程序等待套接字連接

  • 打開一個TCP/IP套接字服務器和本地主機指定的端口上
  • 等待連接
  • 有人連接後,它會讀取來自客戶機的套接字的第一行(由\n結束)
  • 如果線路foo,它將運行命令bar
  • bar命令完成後(或者如果該行不foo),守護程序將等待另一個連接,做同樣的(無限循環)...

是否有可能在寫這篇慶典? (以及如何?)

此外,我想能夠啓動和停止腳本service my-foobar-daemon start/stop(在Ubuntu上),我該怎麼做?

謝謝:)

+0

'inetd'將盡最大的爲你,有各種口味探討您的具體要求。 –

回答

1

下面的代碼片段使用bashnc實施要求:

#! /bin/bash 
while true; do 
    coproc nc -l -p 8080 
    if read -u "${COPROC[0]}" line; then 
     case "$line" in 
      foo) 
       bar 
       ;; 
      *) 
       echo "$line: unknown command" >&2 
       ;; 
     esac 
    fi 
    kill "$COPROC_PID" 
    wait "$COPROC_PID" 
done 
+0

謝謝。我會嘗試。 –

+0

它會在沒有'coproc'的情況下工作嗎? –

+0

我使用'coproc'關閉第一行後的連接。如果客戶端在一行之後關閉連接,腳本將會簡單得多 - 並且不需要'coproc'。 – nosid

0
#! /bin/bash 
coproc nc -l -p 8080 
while true; do 
    if read -u "${COPROC[0]}" line; then 
     case "$line" in 
      foo) 
       bar 
       break 
       ;; 
      *) 
       echo "$line: unknown command" >&2 
       ;; 
     esac 
    fi 
done 
kill "$COPROC_PID"