사용자별 데몬 같은 것이 있나요?

사용자별 데몬 같은 것이 있나요?

특정 사용자로 로그인되어 있는 동안 존재하는 일부 백그라운드 프로세스를 실행해야 합니다.

사용자별 데몬 같은 것이 있나요? 나는 컴퓨터 시작부터 종료(또는 수동 시작/종료)까지 전역 데몬에 대해서만 알고 있습니다.

이제 프로세스가 이미 존재하는지 확인하고, 없으면 생성하는 스크립트를 만들었습니다. 그런 다음 nohup내 것을 사용하십시오 .profile. 이렇게 하면 프로세스가 시작 시 시작되고 한 번만 시작됩니다(여러 rxvt용어가 왔다가 사라지더라도). 그러나 로그인한 후에는 결코 종료되지 않습니다(재난은 아니지만 프로세스를 종료하는 것이 더 깔끔할 것입니다).

답변1

systemd를 사용하면 사용자가 자신의 systemd 인스턴스를 실행하여 개인 데몬을 관리할 수 있습니다.

systemd --user이미 systemd가 설치되어 있는 경우 를 실행하여 서비스를 시작하고 관리하기 만 하면 됩니다 systemctl --user. 사용자 서비스는 에서 검색됩니다 ~/.config/systemd/user.

기본적으로 systemd는 로그아웃 시 사용자 서비스를 종료합니다(요청에 따라). 이 동작은 이 명령을 사용하여 사용자에 대한 연기를 활성화함으로써 변경될 수 있습니다 loginctl --enable-linger $USER.

자세한 내용은 다음에서 확인할 수 있습니다.건축 위키 페이지.

답변2

dbus 서비스는 정확히 이 목적으로 사용됩니다. 음, 이 목적으로 사용될 수 있습니다 :-). 사용자별 dbus 데몬은 사용자가 데스크탑 환경에 로그인할 때 시작되고 사용자가 로그아웃할 때 종료됩니다(맨 페이지 dbus-launch및 옵션 참조 --exit-with-session). dbus 서비스는 dbus 인스턴스와 함께 시작되거나 dbus를 통해 서비스의 인터페이스가 처음 호출될 때 시작될 수 있습니다. 각 사용자는 사용자 홈 디렉터리의 숨겨진 디렉터리에 정의되거나 에서 전역적으로 정의된 자신만의 dbus 서비스 사양을 가질 수 있습니다 /etc.freedesktop의 dbus 홈페이지광범위한 문서 및 참조 구현.

요즘에는 데비안 기반 배포판만 사용합니다. 이러한 모든 스크립트에는 /etc/X11/Xsession.d선택한 데스크탑 환경을 시작하는 명령으로 최종적으로 평가될 문자열을 자주 수정하는 스크립트가 있습니다. dbus에는 명령 앞에 dbus 래퍼를 추가하는 스크립트가 있습니다 dbus-launch. 이 래퍼는 dbus 서버를 시작하고 최소한 바닐라 데비안("모든 데비안 기반 배포판에서"라고 말하고 싶습니다) dbus-launch옵션을 제공합니다 --exit-with-session.

사용자가 dbus 서비스에 로그인할 때 실행하려는 프로세스를 래핑할 수 있어야 하며, IIRC dbus는 종료하기 전에 해당 서비스를 자동으로 종료합니다.

답변3

BASH를 셸로 사용하는 경우 ~/.bash_logout에서 일부 감지를 시도하고 실행 중인 프로세스를 닫을 수 있습니다.

장기적으로 여러분이 찾고 있는 것은 아마도 이와 같은 인터페이스(예: D-Bus를 통해)일 것입니다.콘솔 툴킷아니면 체계적으로로그인했습니다.

관련 정보