我正在尝试通过 来检查服务状态 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
这将显示服务何时启动,在此阶段状态将处于激活阶段。