with-unprivileged-user

systemctl을 일반 유저로 사용하는 방법

루트 권한 없이도 사용자별로 독립된 서비스를 실행하는 방법

Service files

~/.config/systemd/user/app.service

[Unit]
Description=Website Server
After=network.target

[Service]
WorkingDirectory=/home/website/deploy/website
ExecStart=/usr/bin/java -Xmx512m -jar /home/website/deploy/website/app.jar

SuccessExitStatus=143
Restart=on-failure
RestartSec=5

MemoryMax=600M
MemoryHigh=500M
OOMPolicy=kill

[Install]
WantedBy=default.target
# --user를 사용해서 일반 유저의 daemon을 설정할 수 있다.
systemctl --user enable app.service
systemctl --user start app.service

Linger

  • 일반 유저는 logout 상태일 때 daemon들이 다 죽는다.
  • 그렇기 때문에 아래와 같이 Linger를 활성화 시켜줘야한다.
sudo loginctl enable-linger website