実行時にサービス名の左側に印刷される点をどのように抑制できますか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は*
点の代わりにを印刷します。
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=
。このコマンドは、コンピュータで解析可能な出力が必要な場合に使用するためのものです。