사용자가 로그인하기 전에 서비스 시작

사용자가 로그인하기 전에 서비스 시작

저는 Win 7 x64 호스트의 VirtualBox VM에서 debian 4.8.4-1 x64 바닐라를 실행하고 있습니다. 설치 목적은 포트 4040에서 웹 인터페이스를 제공하는 아음속 음악 스트리밍 서비스용 서버 역할을 하는 것입니다. 서비스는 로그인할 수 있고 홈 디렉터리를 가지고 있는 표준 사용자인 "subsonic" 사용자로 실행됩니다(이것이 중요한지 확실하지 않음).

Windows 호스트에서 가상 머신을 시작하면 머신이 부팅되고 로그인 프롬프트가 표시됩니다. 이 시점에서 다른 컴퓨터에서 포트 80의 Apache 웹 서버에 액세스할 수 있지만 포트 4040의 아음속 서비스에는 액세스할 수 없습니다. 아음속 사용자로 로그인하면 아음속 서비스를 이용할 수 있습니다.

분명히 아음속 서비스는 사용자가 로그인한 후에 시작되고, 아파치는 로그인 전에 시작됩니다. 차이점은 무엇이며, 로그인 전에 아음속 서비스가 시작되도록 설정하려면 어떻게 해야 합니까? 이것이 올바른 접근 방식입니까, 아니면 사용자를 자동 로그인해야 합니까?

저는 작동하는 방식, 바람직하게는 Linux 철학과 일치하는 방식을 찾고 있습니다.

답변1

서비스 이름이 이라고 가정할 때 subsonic, 서비스가 실행되고 systemctl status subsonic.service오류가 없다면 서비스 subsonic는 시스템 서비스로 실행되고 있는 것입니다. 이 경우 이 답변은 별로 도움이 되지 않습니다.

그러나 거기에서 오류가 발생하지만 systemctl --user status subsonic.service실행 후 오류가 없으면 서비스가 사용자 인스턴스에서 실행되고 있음을 의미하며 systemd출력의 첫 번째 줄은 서비스 파일이 저장되는 위치를 나타냅니다. 즉, 서비스를 시작하려면 사용자가 먼저 로그인해야 합니다.

실제 사용자가 로그인했는지 여부에 관계없이 모든 사용자에 대해 서비스를 실행하려면 서비스 파일을 다음 위치로 이동하세요 /etc/systemd/system( man systemd.unit시스템 경로 목록은 참고자료 참조). 또한 서비스를 특정 사용자로 실행하려면( 에서 실행하는 대신 ) 해당 섹션을 파일 에 root추가해야 합니다 (참고자료 참조 ).User=subsonic[Service]man systemd.service

이 파일을 이동한 후 실행하면 systemctl status subsonic.service일부 출력이 생성되고(서비스가 비활성이지만 로드되었을 수 있음) 실행하면 systemctl --user status subsonic.service오류가 발생합니다.

관련 정보