< ~wiki

daemonize with user units

so you've got a process that you want to keep running. you might have it in a tmux or screen session. let's use systemd user units to manage it!

  1. ensure that your user unit loadpath is set up:

     mkdir -p ~/.config/systemd/user/
    
  2. create a basic service. save something like this in ~/.config/systemd/user/my-new-service.service (using the name of the unit you're creating)

     [Unit]
     Description=foo
    
     [Service]
     ExecStart=/bin/bash -c "while true do; echo hi; done"
    
     [Install]
     WantedBy=default.target
    
  3. enable it

     systemctl --user enable --now my-new-service.service
    
  4. enable-linger for your user account

     loginctl enable-linger
    

this allows your user units to run even when you're not logged in.

done!

you can now use systemctl --user to manage your daemonized process.

pro-tip: add alias sysu='systemctl --user' to your shell's configuration for a handy shortcut (or any other alias as you choose)


source