재부팅 또는 종료 시 /usr/lib/systemd/system-shutdown/에서 스크립트를 어떻게 실행할 수 있습니까?

재부팅 또는 종료 시 /usr/lib/systemd/system-shutdown/에서 스크립트를 어떻게 실행할 수 있습니까?

~에 따르면이 답변 그리고이 버그 보고서 스크립트를 넣어주시면 됩니다

/usr/lib/systemd/system-shutdown/

아니면 데비안의 경우

/lib/systemd/system-shutdown/

재부팅하거나 종료할 때 실행합니다. ~에서

https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html:

실제 시스템 quit/poweroff/reboot/kexec를 실행하기 전에 systemd-shutdown은 /usr/lib/systemd/system-shutdown/에 있는 모든 실행 파일을 실행하고 "halt", "poweroff" , "reboot"라는 인수를 전달합니다. 또는 "kexec"(선택한 작업에 따라) 디렉터리의 모든 실행 파일은 병렬로 실행되며 모든 실행 파일이 완료될 때까지 실행이 계속되지 않습니다.

내 스크립트는 다음에 설명되어 있습니다.Debian 9 또는 Raspbian 8에서 종료 시 스크립트를 실행하는 방법(Jessie)처럼:

#!/bin/sh
touch /test

하지만 내 데비안 시스템에서는 실행되지 않는 것 같습니다. 심지어 다음과 같이 보고합니다.허점.

답변1

실제로 스크립트가 실행 중입니다. Bigon과 버그 리포트에서 지적했듯이 touch스크립트가 실행될 때 파일 시스템이 이미 읽기 전용으로 마운트되어 있기 때문에 작동하지 않습니다./lib/systemd/system-shutdown/

이는 다음과 같이 마운트하고 fs를 읽고 작성하여 입증할 수 있습니다 touch.

#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /

이제 /test재부팅한 후에만 실제로 표시됩니다.

그러나 이것은 또한 이 폴더를 통해 내 스크립트를 실행하는 것이 너무 늦게 발생하기 때문에 쓸모가 없다는 것을 의미합니다.

로그 파일 등에 쓰려면 권장되는 서비스를 통해 스크립트를 미리 실행해야 합니다.비곤. 나는 이것을 설명한다Debian 9 또는 Raspbian 8에서 종료 시 스크립트를 실행하는 방법(Jessie).

답변2

따라서 시스템 종료 중에 스크립트를 실행하려면 .service 파일을 추가해야 합니다. 다음을 참조하세요.종료하기 전에 systemd를 사용하여 스크립트를 실행하는 방법은 무엇입니까?

/lib/systemd/system-shutdown/특수한 경우를 위해 예약되어 있으며 종료/다시 시작 프로세스가 끝날 때 실행됩니다.

관련 정보