Inicia o serviço antes que o usuário efetue login

0

Estou executando um debian 4.8.4-1 x64 vanilla em uma VM do VirtualBox em um host Win 7 x64. O propósito da instalação é servir como servidor para o serviço de streaming de música subsônico, que oferece uma interface web na porta 4040. O serviço é executado como usuário 'subsônico', que é um usuário padrão que pode efetuar login e ter um diretório home (não certeza se isso é importante.)

Quando inicio a VM a partir do host do Windows, a máquina é inicializada e me fornece um prompt de login. Neste momento, posso acessar o servidor web apache na porta 80 de outras máquinas, mas não consigo acessar o serviço subsônico na porta 4040. Assim que eu fizer login no usuário subsônico, o serviço subsônico estará disponível.

Obviamente, o serviço subsônico só é iniciado depois que o usuário efetua login, enquanto o apache é iniciado antes do login. Qual é a diferença e como configuro o serviço subsônico para iniciar antes do login? Essa é a abordagem correta ou devo fazer o login do usuário automaticamente?

Estou procurando uma maneira que funcione e, de preferência, é idiomática para a filosofia linux.

    
por phi 02.08.2015 / 15:00

1 resposta

2

Assumindo que o nome do serviço seja subsonic , Se você executar systemctl status subsonic.service e não houver erros, o serviço subsonic será executado como um serviço do sistema e, nesse caso, essa resposta não ajudará muito.

No entanto, se você receber um erro, mas executar systemctl --user status subsonic.service e não tiver erros, significa que o serviço está sendo executado sob a instância do usuário de systemd e a primeira linha da saída indica onde o arquivo de serviço está sendo armazenado. Isso significa que, para o serviço ser iniciado, o usuário teria primeiro que efetuar login.

Se você quiser que o serviço seja executado para todos os usuários, independentemente de o usuário real estar conectado ou não, mova o arquivo de serviço para /etc/systemd/system (consulte man systemd.unit para a lista de caminhos do sistema). Além disso, se você quiser que o serviço seja executado em um usuário específico (e não em root ), adicione User=subsonic à seção [Service] do arquivo (consulte man systemd.service ).

Depois de mover este arquivo, executar systemctl status subsonic.service deve resultar em alguma saída (provavelmente que o serviço esteja inativo, mas carregado) e executar systemctl --user status subsonic.service deve resultar em erro.

    
por 02.08.2015 / 16:26