我想创建一个简单的Linux守护程序,该守护程序将...
- 在Local主机上打开TCP/IP服务器套接字,并指定端口
- 等待连接
- 有人连接后,它将读取客户端套接字的第一行(由
n
结束) - 如果该行是
foo
,它将运行命令bar
-
bar
命令完成(或如果行不是foo
),守护程序将等待另一个连接并执行相同的操作(在无限循环中)...
有可能在bash中写这篇文章吗?(以及如何?)
另外,我希望能够使用service my-foobar-daemon start / stop
(在Ubuntu上)启动和停止脚本,我该怎么做?
谢谢:)
以下摘要使用bash
和nc
来实现要求:
#! /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
#! /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"