~에 따르면이 답변 그리고이 버그 보고서 스크립트를 넣어주시면 됩니다
/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/
특수한 경우를 위해 예약되어 있으며 종료/다시 시작 프로세스가 끝날 때 실행됩니다.