2012-10-19 48 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"