这两个命令的“作业”和“进程” “服务”有什么区别systemctl
?
root@linuxbox:~# systemctl list-jobs
No jobs running.
root@linuxbox:~# systemctl list-units --type=service --state=running
UNIT LOAD ACTIVE SUB DESCRIPTION
containerd.service loaded active running containerd container runtime
docker.service loaded active running Docker Application Container Engine
[email protected] loaded active running Getty on tty1
inetd.service loaded active running Internet superserver
ntp.service loaded active running Network Time Service
rngd.service loaded active running Start entropy gathering daemon (rngd)
[email protected] loaded active running Serial Getty on ttyPS0
ssh.service loaded active running OpenBSD Secure Shell server
syslog-ng.service loaded active running System Logger Daemon
tftpd-hpa.service loaded active running LSB: HPA's tftp server
watchdog.service loaded active running watchdog daemon
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
11 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
答案1
总括:“jobs”代表请求的“services”或其他 systemd 单元的状态更改。它们仅在服务启动/停止/重新启动等时存在。
服务
用 systemd 的话说,“服务”是受监督的进程组,(主要)通过定义.service
单元配置文件。
每个服务(与任何其他 systemd 单元类型一样)都有一个状态,如手册页中所述系统 (1):
单元可能处于“活动”状态(表示已启动、已绑定、已插入……,具体取决于单元类型,请参见下文),也可能处于“非活动”状态(表示已停止、未绑定、已拔出……),以及正在运行的过程中。激活或去激活,即两种状态之间(这些状态称为“激活”、“去激活”)。还可以使用特殊的“失败”状态,该状态与“非活动”非常相似,当服务以某种方式失败时进入(进程在退出时返回错误代码,或崩溃,操作超时,或重新启动次数过多) )。如果进入此状态,则会记录原因,以供以后参考。请注意,各种单元类型可能具有许多附加子状态,这些子状态映射到此处描述的五个广义单元状态。
(现在五个单位状态中添加了“重装”和“维护”,所以总共有七个,但变化不大)
systemctl list-units --type=service --state=running
显示所有处于“活动”状态的“运行”子状态的服务,从而完成激活。
工作
“作业”是对 systemd 的状态更改请求。它们仅存在于 RAM 中,并且仅在处理请求时存在。
systemd 中概述了当请求状态更改时(启动或关闭时,使用systemctl start
、等)会发生什么systemctl stop
原始设计文件:
如果请求启动或关闭某个单元,我们会将其及其所有依赖项添加到临时事务中。然后,我们将验证交易是否一致(即所有单元通过 After/Before 排序是否无循环)。如果不是,systemd 将尝试修复它,并从事务中删除可能消除循环的非必要作业。此外,systemd 会尝试抑制事务中那些会停止正在运行的服务的非必要作业。非必要作业是指原始请求未直接包含但由 Wants 类型的依赖项拉入的作业。最后,我们检查事务的作业是否与已排队的作业相矛盾,然后可以选择中止事务。如果一切顺利并且事务是一致的并且其影响最小化,则它将与所有已经完成的作业合并并添加到运行队列中。
本质上,当egsystemctl start ssh.service
运行时,ssh.service
会创建启动作业及其所有(尚未运行)依赖项,并将该单元ssh.service
置于“激活”状态。
systemctl list-jobs
只要服务尚未完成启动或者对于状态更改至关重要的作业失败,您就会在输出中看到这些作业。之后,服务将进入“活动”或“失败”状态。