사용자가 로그아웃 시 종료되면서 실행 중인 시스템 서비스

사용자가 로그아웃 시 종료되면서 실행 중인 시스템 서비스

선택된 사용자에 대해 실행되는 시스템 서비스가 있습니다. 이름은 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.

관련 정보