1

簡単な Linux デーモンを作成したいと思います...

  • localhost と指定されたポートで tcp/ip サーバー ソケットを開きます
  • 接続を待つ
  • 誰かが接続した後、クライアントのソケットから最初の行を読み取ります (で終了\n)
  • 行が の場合、fooコマンドを実行しますbar
  • barコマンドが終了した後(または行がそうでない場合foo)、デーモンは別の接続を待機し、同じことを(無限ループで)行います...

これをbashで書くことは可能ですか?(そしてどうやって?)

また、(Ubuntuで)スクリプトを開始および停止できるようにしたいのですがservice my-foobar-daemon start / stop、どうすればできますか?

ありがとう :)

4

2 に答える 2

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
于 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 に答える