1

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

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

可以用bash写这个吗?(如何?)

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

谢谢 :)

4

2 回答 2

1

以下代码段使用bashandnc来实现要求:

#! /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
于 2012-10-19T15:34:57.243 回答
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"
于 2016-01-08T07:48:12.583 回答