systemctl "job"과 "service"의 차이점은 무엇입니까?

systemctl "job"과 "service"의 차이점은 무엇입니까?

이 두 명령의 "작업"과 "프로세스" 및 "서비스" 의 차이점은 무엇입니까 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

요약:"작업"은 "서비스" 또는 기타 시스템 단위에 대해 요청된 상태 변경을 나타냅니다. 서비스가 시작/중지/다시 시작될 때만 존재합니다.

제공하다

시스템 용어로 "서비스"는 감독되는 프로세스 그룹으로, (주로) 다음에 의해 정의됩니다..service장치 구성 파일.

각 서비스(다른 시스템 단위 유형과 마찬가지로)에는 매뉴얼 페이지에 설명된 대로 상태가 있습니다.시스템(1):

장치는 "활성" 상태(시작됨, 바인딩됨, 연결됨...을 의미함, 장치 유형에 따라 다름, 아래 참조) 또는 "비활성" 상태(중지됨, 바인딩 해제됨, 연결됨을 의미함...)일 수 있습니다. 장치 유형에 따라 아래 참조) 플러그를 뽑고...) 실행 중입니다. 활성화 또는 비활성화, 즉 두 상태 사이(이러한 상태를 "활성화", "비활성화"라고 함). 또한 "비활성"과 매우 유사한 특별한 "실패" 상태도 있으며 서비스가 어떤 방식으로든 실패할 때 시작됩니다(프로세스가 종료 시 오류 코드를 반환하거나 충돌이 발생하거나 작업 시간이 초과되거나 다시 시작됨). 너무 많이 )). 이 상태가 되면 나중에 참조할 수 있도록 이유가 기록됩니다. 다양한 셀 유형에는 여기에 설명된 5개의 일반화된 셀 상태에 매핑되는 많은 추가 하위 상태가 있을 수 있습니다.

(현재 5개의 유닛 상태에 "재장전"과 "유지 관리"가 추가되어 총 7개가 되지만 크게 달라진 것은 없습니다)

systemctl list-units --type=service --state=running활성 상태의 실행 중 하위 상태에 있는 모든 서비스를 표시하면 활성화가 완료됩니다.

일하다

"작업"은 systemd에 대한 상태 변경 요청입니다. RAM에만 존재하며 요청이 처리되는 동안에만 존재합니다.

상태 변경이 요청되면(시작 또는 종료, 사용 등) systemctl start어떤 일이 발생하는지 systemd에 설명되어 있습니다.systemctl stop원본 디자인 문서:

장치를 시작하거나 종료하라는 요청이 있으면 해당 장치와 모든 종속성을 임시 트랜잭션에 추가합니다. 그런 다음 트랜잭션이 일관성이 있는지 확인합니다(즉, 모든 단위가 루프 없이 After/Before를 통해 정렬됨). 그렇지 않은 경우 systemd는 문제를 해결하고 주기를 제거할 수 있는 트랜잭션에서 중요하지 않은 작업을 제거하려고 시도합니다. 또한 systemd는 서비스 실행을 중지하는 트랜잭션 내에서 필수적이지 않은 작업을 억제하려고 시도합니다. 비필수 작업은 원래 요청에 직접 포함되지 않았지만 Wants 유형의 종속성에 의해 끌어온 작업입니다. 마지막으로 트랜잭션의 작업이 대기 중인 작업과 충돌하는지 확인한 다음 선택적으로 트랜잭션을 중단합니다. 모든 것이 잘 진행되고 트랜잭션이 일관되고 영향이 최소화되면 완료된 모든 작업과 병합되어 실행 대기열에 추가됩니다.

기본적으로, 예를 들어 systemctl start ssh.service실행될 때 ssh.service시작 작업과 해당 작업의 모든(아직 실행되지 않은) 종속성이 생성되고 장치는 ssh.service"활성" 상태가 됩니다.

systemctl list-jobs서비스 시작이 완료되지 않거나 상태 변경에 중요한 작업이 실패하는 경우 출력에서 ​​이러한 작업을 볼 수 있습니다. 이후 서비스는 "활성" 또는 "실패" 상태로 전환됩니다.

관련 정보