当我看到状态时,sysstat
会看到以下内容,
● sysstat.service - Resets System Activity Logs
Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled;
vendor preset: enabled)
Active: active (exited) since Wed 2018-11-28 11:46:45 EST; 4s ago
Process: 4159 ExecStart=/usr/lib64/sa/sa1 --boot (code=exited,
status=0/SUCCESS)
Main PID: 4159 (code=exited, status=0/SUCCESS)
Nov 28 11:46:45 localhost systemd[1]: Starting Resets System
Activity Logs...
Nov 28 11:46:45 localhost systemd[1]: Started Resets System
Activity Logs.
也找不到pid
上面指定的任何内容。
问题是,为什么会发生这种情况?
答案1
你的假设是错误的。 sysstat 是一个“oneshot”类型的服务,这意味着它执行一次然后退出:
$ cat /usr/lib/systemd/system/sysstat.service
#... elided ...
[Service]
Type=oneshot
RemainAfterExit=yes
User=root
ExecStart=/usr/lib64/sa/sa1 --boot
#... elided ...
...这解释了为什么没有 PID——因为不再有进程了。
这systemd 服务的文档部分说:
oneshot 的行为与 simple 类似;然而,预计该进程必须在 systemd 启动后续单元之前退出。