systemd 장치를 사용하여 시작 (부팅) 및 중지 (종료, 재부팅)시 프로세스를 트리거하려면 어떻게해야합니까?

U. Windl

비슷하지만 systemd로 종료 / 재부팅 할 때 스크립트 실행 과 동일하지는 않습니다 .

systemd시스템이 종료 될 때 (종료 또는 재부팅, 패닉 상태 일 수도 있음) 및 시스템이 부팅 될 때를 사용하여 사용자 지정 프로세스를 실행하고 싶습니다 . 두 작업 모두 가능한 한 빨리 실행해야합니다.

분명히 Type서비스가 될 것입니다 oneshot,하지만 난 (나머지에 대해 확실 해요 Wants, Before, After, WantedBy, 등).

내 프로세스에 저널이 필요하기 때문에 다음을 추가했습니다.

[Unit]
DefaultDependencies=no
Wants=syslog.target
After=local-fs.target exit.target
Before=multi-user-target

[Service]
Type=oneshot
RemainAfterExit=no

[Install]
WantedBy=multi-user.target

서비스를 활성화하면 내 프로그램은 ExecStart=로컬 파일 시스템이 마운트 된 후 (를 통해 ) 시작 되지만 ExecStop=임시 파일이 생성되기 전에 즉시 (를 통해 ) 다시 시작됩니다 . 재부팅시 전혀 시작되지 않았습니다.

U. Windl

여러 번 반복 한 후 단위가 포함 된이 솔루션을 찾았습니다 . 하나는 부팅에 사용되고 다른 하나는 종료에 사용됩니다.

# /etc/systemd/system/log-start-test.service
[Unit]
Description=Test Start log entries
Documentation=man:logger(1)
Documentation=https://www.freedesktop.org/software/systemd/man/bootup.html
DefaultDependencies=no
After=local-fs.target
Before=sysinit.target
Requires=local-fs.target
ConditionPathExists=/usr/bin/logger

[Service]
Type=oneshot
TimeoutSec=5
ExecStart=/usr/bin/logger -p user.notice "Starting test..."

[Install]
WantedBy=sysinit.target

시작은 로컬 파일 시스템이 마운트 된 직후 (요청 된대로) 기록됩니다.

# /etc/systemd/system/log-stop-test.service
[Unit]
Description=Test Stop log entries
Documentation=man:logger(1)
Documentation=https://www.freedesktop.org/software/systemd/man/bootup.html
DefaultDependencies=no
After=default.target
Requires=local-fs.target
ConditionPathExists=/usr/bin/logger

[Service]
Type=oneshot
TimeoutSec=5
RemainAfterExit=yes
ExecStop=/usr/bin/logger -p user.notice "Stopping Test..."

[Install]
WantedBy=default.target

서비스 된 처음 몇 개가 종료 된 후 중지 메시지가 기록됩니다 (동시에 실행 된 것 같습니다).

TimeoutSec=5단지 확실히 매달려 프로세스가 부팅하거나 중지하고, 대부분은 대한 이해되지 않는다 방지하지하기 위해,이 logger.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관