
선택된 사용자에 대해 실행되는 시스템 서비스가 있습니다. 이름은 serv@<uid>
( <uid>
사용자의 UID)입니다. 사용자의 리소스 제한을 서비스와 공유하고 싶고(에 넣음 user-<uid>.slice
) 그의 권한도 사용하고 싶습니다.
/etc/systemd/system/[email protected]
[Unit]
Description=My service for user %i
[Service]
Type=simple
ExecStart=/usr/local/bin/serv.sh
Restart=always
User=%i
Slice=user-%i.slice
SuccessExitStatus=0 255 SIGKILL SIGTERM
[Install]
WantedBy=multi-user.target
사용자가 로그아웃하면 SIGTERM을 사용하여 서비스를 종료합니다. 서비스가 다시 시작되지 않는 이유는 무엇입니까? 서비스가 종료되지 않도록 설정하는 방법은 무엇입니까?
답변1
나에게 해결책은 입니다 loginctl enable-linger username
. 이것이 없으면 사용자가 로그아웃할 때 서비스가 종료됩니다.https://wiki.archlinux.org/index.php/Systemd/User#Automatic_start-up_of_systemd_user_instances
답변2
로그인 구성을 변경할 수 있습니다.
/etc/systemd/logind.conf
[Login]
…
KillUserProcesses=no
…
이는 또한 다른 서비스 및 백그라운드 프로세스(예 screen
: tmux
)의 동작을 변경합니다. 바라보다문제 #3483;
그 후에 실행하십시오 systemctl restart systemd-logind
.