为什么当我的 sytemctl status 时 Active: active (running) 行只显示 running 或 dead ?

为什么当我的 sytemctl status 时 Active: active (running) 行只显示 running 或 dead ?

我正在尝试通过 来检查服务状态 systemd(test.service)systemctl status test.service。但是为什么行Active: active (running)只显示运行或死亡而不是启动/停止/运行/死亡?

答案1

确实如此。我猜你是持有错误的

$ systemd-run --user --no-block --service=oneshot sleep 10
Running as unit: run-r0b9dce0a8bd649d4a2e91d23fe757937.service
$ systemctl status --user run-r0b9dce0a8bd649d4a2e91d23fe757937.service
● run-r0b9dce0a8bd649d4a2e91d23fe757937.service - /usr/bin/sleep 10
   Loaded: loaded (/run/user/1001/systemd/transient/run-r0b9dce0a8bd649d4a2e91d23fe757937.service; transient)
Transient: yes
   Active: activating (start) since Thu 2018-05-17 10:49:43 BST; 9s ago
 Main PID: 7949 (sleep)
   CGroup: /user.slice/user-1001.slice/[email protected]/run-r0b9dce0a8bd649d4a2e91d23fe757937.service
           └─7949 /usr/bin/sleep 10

May 17 10:49:43 alan-laptop systemd[1667]: Starting /usr/bin/sleep 10...

具体来说,如果您希望 systemd 能够判断您的服务是否已启动,那么您的服务需要以某种方式实际告诉它。 systemd 支持几种不同的方式。这里链接的答案显示了其中之一:“如何显示 systemd 服务当前的服务状态?”,它展示了在 shell 脚本或 C 语言中编写服务守护进程(长时间运行的进程)时如何做到这一点。

答案2

您的服务状态将是当前状态。要查看服务实际启动的时间,请检查您的日志日志:

journalctl | grep test.service

这将显示服务何时启动,在此阶段状态将处于激活阶段。

相关内容