我正在使用 SysV 来提供我的服务。
我有:
service myservice restart
现在正在迁移到 systemd,我更喜欢它。唯一的缺点是:
systemctl restart myservice
没有显示我的服务的标准输出,这表明进度。
我知道我可以使用:
journalctl -u myservice -f -b
但我需要另一个控制台,这不是一个舒适的解决方案。journalctl
当服务完成启动时也不会停止。
有什么想法可以改善这一点吗?
更新
我的目标是获得旧的 SysV 行为:启动服务时,显示控制台输出,直到服务启动完成。这样,就可以知道是否存在一些启动问题或了解进度。有时启动速度会很慢。
答案1
这取决于你想要什么。如果你只是想检查active (running)
状态,那就systemctl status myservice
足够了。active (running)
状态通常意味着服务正在实现其目的。
如果您需要更简单的服务活动测试,您可以使用:
# systemctl is-active myservice
active
# echo $?
0
故障状态可能为:# systemctl is-active myservice inactive# echo $? 3
因此你可以在测试中使用它。
但是如果你确实需要journalctl -f
并且想在一段时间后停止它,你可以使用timeout
命令。看示例:
timeout 20s journalctl -f
在这个例子中,journalctl 进程将在 20 秒后被终止。如果你重定向输出,那么你可以解析它。