FolioPierEstudos de TI

Serviços do Windows

Nota 9 de 20 · 8 min de leitura
Nesta página
  1. O que é um serviço
  2. O nome do serviço
  3. A tela de serviços
  4. As propriedades de um serviço
  5. A conta do serviço
  6. Os comandos
  7. Os erros ao iniciar

Um banco de dados que deixa de aceitar conexões depois de uma reinicialização, uma impressão que para em todas as estações e uma rotina que só funciona com alguém conectado ao servidor costumam envolver os serviços do Windows. A configuração de cada serviço define quando ele inicia, com qual conta roda e o que acontece quando falha.

O que é um serviço

Um serviço é um programa que o Windows executa em segundo plano, sem janela, e que pode iniciar junto com o computador, antes de qualquer usuário entrar. O MySQL, o spooler de impressão, o Windows Update e o compartilhamento de arquivos funcionam como serviços.

Um serviço do Windows e um serviço de rede são ideias diferentes. O serviço de rede é um programa que espera conexões em uma porta, e muitos serviços do Windows fazem isso, como o MySQL na porta 3306. Outros serviços do Windows não esperam conexões, como o Windows Update, que apenas busca as atualizações, e um programa aberto por um usuário também pode esperar conexões em uma porta sem ser um serviço do Windows.

Desde o Windows Vista, os serviços rodam em uma sessão separada, sem acesso à área de trabalho dos usuários. Um programa feito para ser usado na tela, quando instalado como serviço, não consegue mostrar as mensagens que abriria e pode ficar parado à espera de um clique que ninguém consegue dar.

O nome do serviço

Cada serviço tem dois nomes. O nome de exibição aparece na tela de serviços, como Spooler de Impressão. O nome do serviço, mais curto, é o usado nos comandos, como Spooler, e aparece na aba Geral das propriedades. No cenário, o serviço do banco de dados se chama MySQL nos dois casos, mas os nomes dependem da instalação.

A tela de serviços

A tela de serviços abre pelo comando services.msc e mostra, para cada serviço, o estado, o tipo de inicialização e a conta usada. Os tipos de inicialização são quatro:

  • Automático: o serviço inicia junto com o Windows;
  • Automático com atraso: o serviço inicia alguns minutos depois dos automáticos, para aliviar a inicialização, e a tela mostra o atraso entre parênteses;
  • Manual: o serviço inicia só quando um programa ou uma pessoa pede;
  • Desativado: o serviço não inicia, nem quando pedido.

Um serviço em Manual, iniciado à mão, funciona até a próxima reinicialização e, depois dela, fica parado. Esse é o caso de um banco de dados que funcionava e deixou de aceitar conexões na manhã seguinte a uma atualização do Windows.

As propriedades de um serviço

A janela de propriedades de um serviço reúne quatro abas:

  • Geral: o nome do serviço, o caminho do executável com os parâmetros, o tipo de inicialização e os botões para iniciar e parar;
  • Logon: a conta com que o serviço roda;
  • Recuperação: as ações do Windows quando o serviço falha;
  • Dependências: os serviços de que este depende e os que dependem dele.

No caminho do executável do MySQL, o parâmetro --defaults-file indica qual arquivo my.ini o serviço lê ao iniciar. Em um servidor com mais de uma instalação, esse parâmetro mostra qual configuração está em uso.

Na aba Recuperação, o Windows pode reiniciar o serviço depois de uma falha. A reinicialização automática mantém o serviço disponível, mas esconde as quedas repetidas, que continuam registradas no log do próprio programa e no Visualizador de Eventos.

Na aba Dependências, um serviço só inicia depois dos serviços de que depende, e a parada de um serviço exige a parada dos que dependem dele.

A conta do serviço

Todo serviço roda com uma conta, e essa conta define o que ele acessa no computador e na rede:

  • Sistema Local: a conta com mais poderes no computador, usada por muitos serviços;
  • Serviço Local: uma conta com poucas permissões no computador, que acessa a rede de forma anônima;
  • Serviço de Rede: uma conta com poucas permissões no computador, que acessa a rede em nome do próprio computador;
  • Conta de usuário: uma conta comum, local ou do domínio, com a senha gravada na configuração do serviço.

Em uma rede com domínio, o Sistema Local e o Serviço de Rede acessam os outros computadores em nome do próprio computador, e o servidor pode dar permissão a essa conta. Em uma rede sem domínio, comum em lojas pequenas, os outros computadores não reconhecem a conta do computador. Um serviço que grava em uma pasta compartilhada de outro computador, nesse caso, roda com uma conta de usuário, e o computador de destino precisa ter uma conta com o mesmo nome e a mesma senha, com permissão na pasta.

Quando a senha da conta de usuário muda ou expira, o serviço deixa de iniciar por falha de logon, e a senha nova precisa ser informada na aba Logon. O serviço também não enxerga as unidades mapeadas nem as impressoras adicionadas pelos usuários, porque esses itens pertencem às contas dos usuários, e o caminho de rede completo, como \\servidor-loja\SISTEMA, funciona quando a conta do serviço tem permissão.

Os comandos

No prompt de comando aberto como administrador, os serviços são consultados e configurados pelo nome do serviço:

  • sc query MySQL: mostra o estado do serviço, como RUNNING, em execução, ou STOPPED, parado;
  • sc queryex MySQL: mostra também o PID do processo do serviço;
  • sc qc MySQL: mostra a configuração, com o caminho do executável, o tipo de inicialização, a conta e as dependências;
  • sc config MySQL start= auto: muda o tipo de inicialização para automático, com um espaço obrigatório depois do sinal de igual.

No Windows PowerShell, o nome sc é um apelido de outro comando, e o programa precisa ser chamado como sc.exe. O PowerShell também tem comandos próprios para os serviços:

  • Get-Service MySQL: mostra o estado do serviço;
  • Restart-Service MySQL: para e inicia de novo o serviço;
  • Get-CimInstance Win32_Service -Filter "Name='MySQL'" | Select-Object Name, State, StartMode, StartName, PathName, ProcessId: mostra o estado, o tipo de inicialização, a conta, o caminho do executável e o PID.

Os erros ao iniciar

Quando um serviço não inicia, a mensagem traz um código que indica onde a falha aconteceu:

  • Erro 5: acesso negado, em geral porque o comando foi executado sem a permissão de administrador;
  • Erro 2: o executável indicado na configuração do serviço não foi encontrado, como depois de uma pasta movida ou de uma desinstalação incompleta;
  • Erro 1058: o serviço está desativado;
  • Erro 1068: um serviço de que ele depende não iniciou;
  • Erro 1069: a conta do serviço não conseguiu entrar no Windows, em geral por uma senha alterada ou expirada;
  • Erro 1053: o serviço não respondeu ao pedido de início dentro do prazo;
  • Erro 1067: o processo do serviço iniciou e terminou de forma inesperada.

Os erros 1053 e 1067 indicam que o Windows iniciou o programa, e a causa costuma estar no próprio programa. No MySQL, uma opção inválida no my.ini, uma pasta de dados inacessível ou a porta 3306 ocupada por outro programa encerram o serviço logo depois do início, e o log de erros do MySQL registra o motivo. As falhas dos serviços também ficam no Visualizador de Eventos, no log Sistema, com a origem Service Control Manager.

No suporte

Diante de um serviço que não inicia, convém ler o código do erro, conferir o tipo de inicialização, a conta da aba Logon e o caminho do executável, e procurar a causa no log do próprio programa. Um programa testado na tela, por um usuário conectado, não reproduz as condições do serviço, que roda com outra conta, sem as unidades mapeadas e sem acesso à área de trabalho.

Para guardar

  • Um serviço é um programa que o Windows inicia e controla sem depender de um usuário conectado.
  • Os comandos usam o nome do serviço, e a tela de serviços mostra o nome de exibição.
  • Um serviço em Manual fica parado depois de uma reinicialização.
  • A conta do serviço define o acesso ao computador e à rede, e o serviço não enxerga as unidades mapeadas.
  • Os erros 1053 e 1067 apontam para o próprio programa, e o log dele mostra a causa.
Depois de uma atualização do Windows com reinicialização, nenhuma estação se conecta ao banco, e o serviço do MySQL está parado. O que conferir antes de iniciar o serviço?

O tipo de inicialização. Um serviço em Manual não inicia sozinho depois da reinicialização. Se o tipo é Automático e o serviço está parado, o log de erros do MySQL e o Visualizador de Eventos mostram por que ele não iniciou.

Um serviço de envio de arquivos roda como Sistema Local e grava normalmente em uma pasta local, mas recebe acesso negado ao gravar em \\servidor-loja\SISTEMA. O que explica a falha?

Em uma rede sem domínio, o servidor da loja não reconhece a conta do computador de origem, e o acesso do serviço pela rede é negado. O serviço precisa rodar com uma conta de usuário, e o servidor da loja precisa ter uma conta com o mesmo nome e a mesma senha, com permissão no compartilhamento e na pasta.

Publicado a partir do Obsidian · FolioPier