使用 systemctl 打印服务状态时抑制点

使用 systemctl 打印服务状态时抑制点

如何抑制运行时打印到服务名称左侧的点systemctl status XXX?我想将此命令的输出保存到 bash 变量并打印它。输出中点的存在导致我的脚本失败,很可能是因为该点是 unicode 字符。

# systemctl status network
● network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: active (exited) since Thu 2018-10-11 09:16:29 PDT; 6h ago
     Docs: man:systemd-sysv-generator(8)

Oct 11 09:16:24 172.100.139.200 systemd[1]: Starting LSB: Bring up/down networking...
Oct 11 09:16:24 172.100.139.200 network[1376]: Bringing up loopback interface:  [  OK  ]
Oct 11 09:16:28 172.100.139.200 network[1376]: Bringing up interface eth0:  [  OK  ]
Oct 11 09:16:29 172.100.139.200 systemd[1]: Started LSB: Bring up/down networking.

答案1

如果您要解决的问题是避免 Unicode 字符作为输出的一部分,那么您可以使用不使用 UTF-8 的区域设置调用 systemd 命令,在这种情况下,systemd 将打印 a*而不是点。

LC_CTYPE您可以通过将变量设置为C或 之类的内容来临时将非 UTF-8 语言环境设置为单个命令POSIX

例如:

# LC_CTYPE=C systemctl status network
* network.service - LSB: Bring up/down networking
   Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
   Active: active (exited) since Thu 2018-10-11 09:16:29 PDT; 6h ago
     Docs: man:systemd-sysv-generator(8)

Oct 11 09:16:24 172.100.139.200 systemd[1]: Starting LSB: Bring up/down networking...
Oct 11 09:16:24 172.100.139.200 network[1376]: Bringing up loopback interface:  [  OK  ]
Oct 11 09:16:28 172.100.139.200 network[1376]: Bringing up interface eth0:  [  OK  ]
Oct 11 09:16:29 172.100.139.200 systemd[1]: Started LSB: Bring up/down networking.

答案2

man systemctl

地位

此函数旨在生成人类可读的输出。如果您正在寻找计算机可解析的输出,请改用show。 ...

展示

要选择要显示的特定属性,请使用--property=。该命令旨在在需要计算机可解析输出时使用。

相关内容