Linux守护进程等待套接字连接

时间:2012-10-19 14:42:59

标签: bash sockets daemon

我想创建一个简单的Linux守护进程......

  • 在localhost和指定端口
  • 上打开tcp / ip服务器套接字
  • 等待连接
  • 在某人连接后,它将从客户端的套接字读取第一行(以\n结束)
  • 如果该行为foo,则会运行命令bar
  • bar命令完成后(或者如果该行不是foo),守护进程将等待另一个连接并执行相同的操作(在无限循环中)...

有可能用bash写这个吗? (怎么样?)

另外,我希望能够使用service my-foobar-daemon start / stop启动和停止脚本(在Ubuntu上),我该怎么做?

谢谢:)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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"