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) 相当标准的 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)