systemd 单元运行了多长时间?

systemd 单元运行了多长时间?

我可以用 列出我的机器过去的靴子journalctl --list-boots。输出看起来像这样:

 -4 21b1318cbaf04732b95ed0a5e40f6698 Tue 2019-06-25 17:26:53 CEST—Fri 2019-07-05 17:11:31 CEST
 -3 02d30049fdef4a809122f499ef95d122 Fri 2019-07-05 17:12:33 CEST—Wed 2019-08-14 10:23:47 CEST
 -2 aedc9088bd0a4a9588c387e593c9cc25 Wed 2019-08-14 10:24:41 CEST—Fri 2019-09-20 16:28:12 CEST
 -1 e40c23b16b86400292b7da77f03f677f Fri 2019-09-20 16:29:03 CEST—Mon 2019-10-07 16:31:20 CEST
  0 973dc1142add4a249e784c1a68fac31a Mon 2019-10-07 16:32:11 CEST—Tue 2019-10-15 12:12:22 CEST

所以我可以用它来找出计算机何时启动和何时关闭。

我想要单个 systemd 单元(在我的例子中是 .service)具有相同的信息。但我没有找到获取这些信息的方法。明显的journalctl -u foo.service返回行如下所示:

Oct 10 00:00:01 localhost systemd[1]: Started foo service.
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:00:02 localhost foo[19382]: some foo output
Oct 10 00:11:22 localhost foo[19382]: some foo output
Oct 10 12:00:01 localhost systemd[1]: Started foo service.
...

由此我可以发现该服务于 00:00:01 启动,并于 12:00:01 再次启动,但我不知道它到底运行了多长时间(只知道它至少运行到 00:11:22) 。

背景:我想知道该服务(在我的例子中是备份脚本)过去是否花费了或多或少的时间。

答案1

我想systemd-analyze 可能是答案,但看起来并非如此。

有一个很多它似乎能够做到,但该功能更多地涉及“服务启动需要多长时间”,而不是“它们运行了多长时间”为了”。后者可能不是它所做的。systemd-analyze plot > plot.svg输出单元开始时间的 SVG 条形图(突出显示初始化所花费的时间),但是,它似乎不支持“完成时间”(一些条形图提前被切断,但尚不清楚这是否意味着他们的服务在截止点完成)或者是为了支持在同一启动上间歇性运行的进程......

幸运的是,由于您关心的服务是您自己的,因此您可以修改它并添加可以读取journalctl -u foo.service或写入日志文件的“Started @”和“Finished @”消息。

不过,对于您不愿意修改的一般服务,需要其他答案。

相关内容