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

lin*_*fan 1 systemd

运行时如何抑制打印在服务名称左侧的点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.
Run Code Online (Sandbox Code Playgroud)

fil*_*den 5

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

您可以通过将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.
Run Code Online (Sandbox Code Playgroud)