答案1
当systemctl
的输出未发送到终端时,例如如果它通过管道传输到grep
,那么它允许其输出的每一列根据需要增长以适应列表中最长的项目。这就是这里发生的情况:单元列表中的某些单元具有很长的名称,并且对齐所有单元的输出会在yarn.service
和之间产生较大的空间loaded failed failed
。
要过滤单元输出,请使用systemctl
的内置模式匹配:
sudo systemctl list-units '*yarn*'
您可以将输出限制为使用该grep
选项获得的行--no-legend
,避免使用该选项使用颜色和特殊字符--plain
,并避免使用该选项启动寻呼机--no-pager
:
sudo systemctl list-units --plain --no-legend --no-pager '*yarn*'
您可以指定多个模式,结果将包括与任何模式的任何匹配:
sudo systemctl list-units --plain --no-legend --no-pager '*yarn*' '*hdfs*'
如果您想检索特定单位的状态,有更好的子命令;参见例如测试服务是否在脚本中运行的“正确”方法。