我想查看systemctl命令的输出。例如:
systemctl restart systemd-networkd
将显示输出结果
systemctl status systemd-networkd.
我知道我可以编写一个始终按顺序放置命令的脚本,但我希望有像这样的东西systemctl --verbose restart ....
那些没有被包含在用户手册中的内容。
我想查看systemctl命令的输出。例如:
systemctl restart systemd-networkd
将显示输出结果
systemctl status systemd-networkd.
我知道我可以编写一个始终按顺序放置命令的脚本,但我希望有像这样的东西systemctl --verbose restart ....
那些没有被包含在用户手册中的内容。
我们将编辑bashrc文件,在其中添加别名命令。
echo "startstat(){ systemctl start \$*; systemctl status \$* }" >> ~/.bashrc
startstat [arguments to pass to BOTH systemctl start AND systemctl status]
使用示例:
startstat systemd-networkd
systemctl start \$*;
和systemctl status \$*;
之间添加sleep [seconds];
。\$*
和;
之间放置一个单独的&
符号,并在其前面加上一个空格以将其分叉到后台。只需nano ~/.bashrc
,滚动到底部(或者如果您添加了内容,则在其中的任何一行),然后在不幸的是,systemctl
不像大多数 Unix 命令一样提供“详细”选项。
解决方案之一是将 SYSTEMD_LOG_LEVEL
增加到 debug
(在此情况下,info
无用),然后过滤输出,例如:
$ SERVICES="smartmontools cron xxxxx"
$ SYSTEMD_LOG_LEVEL=debug systemctl restart $SERVICES 2>&1|egrep "Got result|Failed"
Failed to restart xxxxx.service: Unit xxxxx.service not found.
Got result done/Success for job cron.service
Got result done/Success for job smartmontools.service
你也可以添加类似于例如的前缀。
$ SYSTEMD_LOG_LEVEL=debug systemctl restart $SERVICES 2>&1|egrep -i "Got result|Failed"|sed 's,^,restart: ,'
restart: Failed to restart xxxxx.service: Unit xxxxx.service not found.
restart: Got result done/Success for job cron.service
restart: Got result done/Success for job smartmontools.service
SYSTEMD_LOG_LEVEL
可能并非所有系统都可用。
systemctl
没有verbose
选项。如果您想实时查看正在运行的服务的输出,可以打开另一个终端并运行:
sudo journalctl --unit=systemd-networkd.service -f
Journalctl文档:https://www.freedesktop.org/software/systemd/man/journalctl.html
systemctl
没有提供verbose
开关,或者类似的东西,这正是我正在寻找的。 - Stephen Boston--verbose
或-v
选项是非常合理的。不谈政治问题,Lennart对systemd拥有控制权,并且考虑到他在我链接的错误报告中的回应,我认为很遗憾,永远不会有详细选项了。 - Richard Cross