"조건..." 실패에 대한 "systemctl status" 메시지가 사라지는데, 무슨 소용인가요?

"조건..." 실패에 대한 "systemctl status" 메시지가 사라지는데, 무슨 소용인가요?

실패한 조건의 테스트 유닛을 생성하고 시작했습니다. systemctl status조건 실패에 대한 정보를 표시하는 것은 가능하지만...오직실패한 상태에서 테스트 서비스를 받을 수 있는 경우.

# systemctl status test.service -n0
● test.service
   Loaded: loaded (/etc/systemd/system/test.service; static; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2018-07-10 17:01:35 BST; 16s ago
Condition: start condition failed at Tue 2018-07-10 17:01:51 BST; 1s ago
           └─ ConditionKernelCommandLine=not-an-option was not met
 Main PID: 4378 (code=exited, status=1/FAILURE)

실패 상태는 셀이 가비지 수집되어 잊혀지는 것을 방지하는 방법입니다. 하지만 그렇지 않으면 장치가 잊혀지고 상태 정보를 볼 수 없게 됩니다. 조건부 실패도 기록되지 않습니다. 이전 디자인의 실패 상태만 기록됩니다.

# systemctl reset-failed test.service
# systemctl status test.service
● test.service
   Loaded: loaded (/etc/systemd/system/test.service; static; vendor preset: disabled)
   Active: inactive (dead)

Jul 10 17:01:35 fedora28-vm systemd[1]: Starting test.service...
Jul 10 17:01:35 fedora28-vm systemd[1]: test.service: Main process exited, code=exited, status=1/FAILURE
Jul 10 17:01:35 fedora28-vm systemd[1]: test.service: Failed with result 'exit-code'.
Jul 10 17:01:35 fedora28-vm systemd[1]: Failed to start test.service.

그렇다면 이 기능을 어떻게 사용해야 할까요 systemctl? 일반적으로 장치를 부팅할 때 실패 조건을 먼저 테스트한 다음 부팅 프로세스를 건너뜁니다. 따라서 실패한 상태로 들어갈 기회가 없습니다.

시스템 버전 v239-120-g0fad72fae에서 테스트되었습니다.

답변1

부팅 프로세스의 일부로 장치가 부팅되도록 허용하면 제대로 작동합니다. 와 같은 활성 장치에 종속된 장치는 가비지 수집이 방지됩니다 multi-user.target.

이 줄을 셀에 추가했습니다.

[Install]
WantedBy=multi-user.target

그런 다음 원하는 방식으로 사용할 수 있습니다.

# systemctl enable test.service
# systemctl start test.service
# systemctl status test.service -n0

● test.service
   Loaded: loaded (/etc/systemd/system/test.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
Condition: start condition failed at Tue 2018-07-10 17:18:21 BST; 3s ago
           └─ ConditionKernelCommandLine=not-an-option was not met

관련 정보