Hello,

I have been trying to create a system service that would run a script on shutdown (hence why I went for a system service over a user service) and landed on something like this

[Unit]
Description=Run backup script on shutdown
DefaultDependencies=no
Before=poweroff.target halt.target
Requires=network.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/var/home/blackeco/scripts/backup.sh
User=blackeco
Group=blackeco

[Install]
WantedBy=poweroff.target halt.target

Unfortunately, when the shutdown occurs, systemd fails to execute the script:

backup-on-shutdown.service: Unable to locate executable '/var/home/blackeco/scripts/backup.sh': Permission denied
backup-on-shutdown.service: Failed at step EXEC spawning /var/home/blackeco/scripts/backup.sh: Permission denied

This script is correctly owned by user blackeco and permissions look fine

$ ls -la /var/home/blackeco/scripts
drwxr-xr-x. 1 blackeco blackeco 154  5 Feb. 13:50 ./
drwxr-xr-x. 1 blackeco blackeco 116  3 Feb. 13:07 ../
-rwxr-xr-x. 1 blackeco blackeco 794  4 Feb. 15:44 backup.sh*

I’m very puzzled as to why. I’m running Bluefin 41 (itself based on Fedora Silverblue 41).

  • Björn Tantau@swg-empire.de
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    2 days ago

    I’m not familiar with Silverblue but home being in /var is sus. Usually it’s in /home. But maybe it’s mounted in a weird Silverblue way and gets unmounted before it runs.

    But running scripts on shutdown is hard to impossible. I always wanted to run automatic updates on shutdown but they don’t have networking even if the unit file requires networking. I haven’t seen anyone properly manage to do that yet, so good luck. And please make a post if it does end up working. Then I will revisit my own efforts again.

    • Telorand@reddthat.com
      link
      fedilink
      English
      arrow-up
      4
      ·
      2 days ago

      It’s not sus at all. The reason /home is in /var is because /var and /etc are the only writeable directories on the system. There is a /home, but it’s actually just a symlink to /var/home.

      This is how all of the Fedora atomic systems are set up, and it’s been the case for a lot of the other immutable distros I’ve tried. It’s just a different way of doing things.

    • whatsgoingdom@rollenspiel.forum
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 days ago

      If that’s the reason maybe OP can add the shutdown as the last step on the script and execute the script instead of the shut down button as a work around.

      • BlackEco@lemmy.blackeco.comOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        No, I really don’t want to hijack the UI for this, as it could break with a DE update. And that wouldn’t work when shutting down from the console.

        • whatsgoingdom@rollenspiel.forum
          link
          fedilink
          English
          arrow-up
          1
          ·
          edit-2
          2 days ago

          Doesn’t have to be, e.g. I have a stream deck and mapped a script to one of the buttons. Or put it as an executable file on your desktop or wherever and use it instead of the normal shutdown button.

    • BlackEco@lemmy.blackeco.comOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 days ago

      I haven’t seen anyone properly manage to do that yet, so good luck.

      Yes, that’s the whole problem, Internet is littered with posts on running a script on shutdown but none of my attempts so far has been successful.