답변:
제안 된 솔루션은 서비스 유닛을 일반 서비스로 실행하는 것 [Install]
입니다. 섹션을 살펴보십시오 . 따라서 모든 것이 역으로 생각되어야하며 종속성도 고려해야합니다. 종료 순서는 역순으로하기 때문입니다. 그렇기 때문에 스크립트를에 배치해야합니다 ExecStop=
.
다음 해결책이 나를 위해 일하고 있습니다.
[Unit]
Description=...
[Service]
Type=oneshot
RemainAfterExit=true
ExecStop=<your script/program>
[Install]
WantedBy=multi-user.target
RemainAfterExit=true
ExecStart
행동 이 없을 때 필요 합니다.
파일을 만든 후 systemctl daemon-reload
및 을 확인하십시오 systemctl enable yourservice --now
.
나는 방금 시스템 IRC에서 그것을 얻었고, 크레딧은 mezcalero로 갈 것입니다.
RemainAfterExit=true
이 필요합니다 . 원인 을 생각 서비스함으로써 그것을 실행하는 원인이 실행되고 종료시. ExecStart
systemd
ExecStop
RemainAfterExit=true
systemd
ExecStop
내가 볼 수있는 한 이것이 필요한 것을 수행합니다 (그러나 나는 왜 그런지 정확히 알지 못합니다).
[Unit]
Description=Log Traffic
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target
[Service]
ExecStart=/usr/local/bin/perl /home/me/log_traffic.pl --stop
Type=oneshot
kexec.target
Before bit
WantedBy=shutdown.target reboot.target halt.target
받는 [Unit]
부분. Before=
& After=
의존성을 바꾸지 마십시오.
reboot / shutdown / halt / kexec 서비스 를 시작하기 직전 에 서비스를 실행하려면 (즉, 루트 파일 시스템이 읽기 전용으로 다시 마운트되기 전 마지막 순간에)이 서비스 구성을 사용하십시오.
[Unit]
Description=Save system clock on shutdown
DefaultDependencies=no
After=final.target
[Service]
Type=oneshot
ExecStart=/usr/lib/systemd/scripts/fake-hwclock.sh save
[Install]
WantedBy=final.target
다음을 사용하여 활성화하십시오.
systemctl enable my_service.service
실제 재부팅 / 종료 / 중지 / kexec 직전 에 스크립트를 실행하려면 (읽기 전용으로 다시 마운트되어 루트 파일 시스템에 쓸 수없는 경우)이 스크립트 실행 파일을 /usr/lib/systemd/system-shutdown
디렉토리에 추가하십시오 .
실제 시스템을 실행하기 직전에 중지 / 전원 차단 / 재부팅 / kexec systemd-shutdown은 / usr / lib / systemd / system-shutdown /의 모든 실행 파일을 실행하고 "halt", "poweroff", "reboot"중 하나의 인수를 전달합니다. 선택한 작업에 따라 "또는"kexec ". 이 디렉토리의 모든 실행 파일은 병렬로 실행되며 모든 실행 파일이 완료되기 전에 작업 실행이 계속되지 않습니다.
참조 :
https://www.freedesktop.org/software/systemd/man/bootup.html
https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html
final.target
. 이상적으로는 사용자가 수행 한 후에 가장 먼저 실행되고 싶습니다 $ sudo reboot
.
나는 확실하지 않지만 명시 적으로 추가했지만 설치 부분이 필요하다고 생각하지 않습니다. 또한 테스트하지는 않았지만 시작하는 데 도움이되어야한다고 생각합니다.
[Unit]
Description=Log Traffic
Requires=network.target
After=network.target
Before=shutdown.target
DefaultDependencies=no
[Service]
ExecStart=/home/me/so.pl
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=shutdown.target
ExecStart=/bin/true
.