Você pode obter o resultado desejado usando uma unidade do systemd conforme abaixo:
[Unit]
Description=Service to run on shutdown before any other services
After=default.target
[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/opt/demo.sh
RemainAfterExit=yes
TimeoutStopSec=0
[Install]
WantedBy=default.target
Os serviços do systemd stop são baseados em sua dependência em ordem reversa. Portanto, o serviço acima começa /bin/true
depois que o sistema atingiu default.target
e seu script /opt/demo.sh
em parar / desligar. Com base em sua exigência, você desejaria ajustar TimeoutStopSec
, atualmente está definido para nunca tempo limite (em vez de 90 segundos padrão)