Systemctl启动/重启/停止命令的输出结果

25

我想查看systemctl命令的输出。例如:

systemctl restart systemd-networkd  

将显示输出结果

systemctl status systemd-networkd. 
我知道我可以编写一个始终按顺序放置命令的脚本,但我希望有像这样的东西
systemctl --verbose restart ....

那些没有被包含在用户手册中的内容。


systemctl通常将stdout输出到日志文件中,对于大多数系统来说,该文件是/var/log/syslog。这是您的意思吗? - dGRAMOP
@dGRAMOP 我正在寻找在发出systemctl命令后立即显示状态的方法。要查看日志输出,我将不得不发出另一个命令。我正在寻找一个开关,它将具有以下效果:#systemctl restart <servicename>; systemctl status <servicename>。 - Stephen Boston
1
我可以向您引荐 Lennart 的回复:错误报告 - Richard Cross
@RichardCross 谢谢。我该怎么理解呢?这份报告比我的原始帖子还要旧。systemctl 没有提供 verbose 开关,或者类似的东西,这正是我正在寻找的。 - Stephen Boston
@StephenBoston 我也在寻找systemctl的详细选项,但很失望地发现没有这样的选项。正如你最初建议的那样,有一个--verbose-v选项是非常合理的。不谈政治问题,Lennart对systemd拥有控制权,并且考虑到他在我链接的错误报告中的回应,我认为很遗憾,永远不会有详细选项了。 - Richard Cross
@RichardCross 哦,同情啊。好吧,我想他想让代码尽可能简单。好的,谢谢你提供的链接。 - Stephen Boston
3个回答

5
据我所知,目前还没有这样的服务。不过,你可以自己动手实现:

我们将编辑bashrc文件,在其中添加别名命令。

echo "startstat(){ systemctl start \$*; systemctl status \$* }" >> ~/.bashrc

请注意,这仅适用于bash会话和您正在运行它的用户,因此不要在未运行bashrc的内容中运行此命令。
您可以通过运行以下命令启动服务并立即获取状态:
startstat [arguments to pass to BOTH systemctl start AND systemctl status]

使用示例:

startstat systemd-networkd 

如果您想在检查状态之前等待一会儿,您可以在两者之间添加一个睡眠时间:systemctl start \$*;systemctl status \$*;之间添加sleep [seconds];
如果您希望在启动完成后运行状态,则可以在\$*;之间放置一个单独的&符号,并在其前面加上一个空格以将其分叉到后台。只需nano ~/.bashrc,滚动到底部(或者如果您添加了内容,则在其中的任何一行),然后在

非常感谢 @dGramop。我有一个简单的脚本,但我想知道是否有一个开关。这似乎很自然。 - Stephen Boston

1

不幸的是,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 可能并非所有系统都可用。


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接