systemd 可以管理普通用户身份运行的服务,参考 ArchLinux wiki,在 ~/.config/systemd/user/ 目录下创建文件 foo.service:

[Unit]
Description=Foo Service
 
[Service]
WorkingDirectory=/home/xxx/foo
ExecStart=java -jar quarkus-app/quarkus-run.jar
 
Restart=always
RestartSec=2
 
[Install]
WantedBy=default.target

然后记得以 root 身份执行 loginctl enable-linger xxx 以使得 xxx 用户注销后,systemd --user 进程以及它管理的服务并不会退出。

管理普通用户的服务:

$ systemctl --user enable foo
$ systemctl --user status foo
$ systemctl --user restart foo
$ journalctl --user -u foo