실패한 조건의 테스트 유닛을 생성하고 시작했습니다. 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