小编Hea*_*ery的帖子

在管道链中使用 jq 不会产生任何输出

jq当输出被重定向时需要一个显式过滤器的问题在整个网络上都有讨论。但是如果jq是管道链的一部分,我无法重定向输出,即使在使用显式过滤器时也是如此。

考虑:

touch in.txt
tail -f in.txt | jq '.f1'
# in a different terminal:
echo '{"f1":1,"f2":2}' >> in.txt
echo '{"f1":3,"f2":2}' >> in.txt
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,jq命令的原始终端中的输出是:

1
3
Run Code Online (Sandbox Code Playgroud)

但是,如果我在jq命令的末尾添加任何类型的重定向或管道,输出将变得无声:

rm in.txt
touch in.txt
tail -f in.txt | jq '.f1' | tee out.txt
# in a different terminal:
echo '{"f1":1,"f2":2}' >> in.txt
echo '{"f1":3,"f2":2}' >> in.txt
Run Code Online (Sandbox Code Playgroud)

第一个终端中没有输出,out.txt 为空。

我已经尝试了数百种变体,但这是一个难以捉摸的问题。唯一的解决办法我发现,通过发现mosquitto_sub和东西网(这是我在那里也发现了这个问题),是包尾,并在shell脚本JQ功能:

#!/bin/bash
tail -f $1 | while IFS='' read line; do
echo …
Run Code Online (Sandbox Code Playgroud)

pipe io-redirection jq

18
推荐指数
2
解决办法
9764
查看次数

无法在 Fedora 中启动时启用 grafana,因为缺少 systemd-sysv-install

相当标准的 Fedora 30 安装:

$ uname -a
Linux <redacted> 5.1.16-300.fc30.x86_64 #1 SMP Wed Jul 3 15:06:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/fedora-release 
Fedora release 30 (Thirty)
Run Code Online (Sandbox Code Playgroud)

我已grafana使用标准说明进行安装,即。添加 grafana rpm repo,然后添加sudo dnf install grafana.

我可以手动启动和使用 grafana,而使用sudo systemctl start grafana-server. 但是,我无法让它在启动时启动。

以下是我使用常用​​推荐方法时发生的情况:

$ sudo systemctl enable grafana-server
Synchronizing state of grafana-server.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable grafana-server
Failed to execute /usr/lib/systemd/systemd-sysv-install: No such file or directory
Run Code Online (Sandbox Code Playgroud)

systemd-sysv-install 确实缺少:

$ …
Run Code Online (Sandbox Code Playgroud)

fedora systemd sysvinit chkconfig

4
推荐指数
1
解决办法
2603
查看次数

标签 统计

chkconfig ×1

fedora ×1

io-redirection ×1

jq ×1

pipe ×1

systemd ×1

sysvinit ×1