如何将stdin实时发送到redis通道?
How to send stdin to redis channel in realtime?
我想发送终端的 stdout 和 stderr,同时我 运行 一个巨大的批处理文件。批处理文件
echoer.sh
echo $HOME
sleep 3
echo $HOME
sleep 3
echo $HOME
# n times
正在终端中执行
./echoer.sh | redis-cli -x publish echoer
这会等待 echoer.sh
的整个执行完成,然后发送发布命令。有没有办法在收到输出后立即发布?
当前输出
# command
redis-cli subscribe echoer
# output below
1) "message"
2) "echoer"
3)"/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n
当然,一次一行地读取脚本的输出,然后将该行发布到 Redis:
./echoer.sh | while read line ; do echo "$line" | redis-cli -x publish echoer ; done
使用 xargs
,它使用 xargs 实用程序将每一行发送到 echoer
通道。
./echoer.sh| xargs -n 1 redis-cli publish echoer
我想发送终端的 stdout 和 stderr,同时我 运行 一个巨大的批处理文件。批处理文件 echoer.sh
echo $HOME
sleep 3
echo $HOME
sleep 3
echo $HOME
# n times
正在终端中执行
./echoer.sh | redis-cli -x publish echoer
这会等待 echoer.sh
的整个执行完成,然后发送发布命令。有没有办法在收到输出后立即发布?
当前输出
# command
redis-cli subscribe echoer
# output below
1) "message"
2) "echoer"
3)"/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n/home/prashant\n
当然,一次一行地读取脚本的输出,然后将该行发布到 Redis:
./echoer.sh | while read line ; do echo "$line" | redis-cli -x publish echoer ; done
使用 xargs
,它使用 xargs 实用程序将每一行发送到 echoer
通道。
./echoer.sh| xargs -n 1 redis-cli publish echoer