Como os serviços do sistema funcionam nos snaps

9

Ao criar um snap, e de acordo com a sintaxe do arquivo snapcraft.yaml , a daemonpalavra - chave pode ser adicionada para especificar que o aplicativo será executado como um serviço do sistema. Como exemplo dessa declaração:

apps:
  tinyproxy:
    command: ./launcher.sh
    daemon: simple
    plugs: [network,network-bind]

No entanto, o que significa exatamente ser um serviço do sistema em um piscar de olhos? Ou seja, qual é o ciclo de vida deles (iniciar, reiniciar, parar ...)? Posso monitorá-los em execução no sistema com as ferramentas habituais ( ps, top, etc)?

David Planella
fonte

Respostas:

8

De https://developer.ubuntu.com/en/snappy/build-apps/debug/

Testando um serviço

Para testar um serviço, ele deve ser instalado primeiro. Depois de instalado, o systemctlcomando do systemd pode ser usado para verificar se o serviço é iniciado e executado conforme o esperado, por exemplo:

systemctl status snap.<name>.<appname>

Localizando os logs

O journalctlcomando pode ser usado para inspecionar as mensagens que o serviço envia para stdout/ stderr, por exemplo:

journalctl -u snap.<name>.<appname>

Os serviços podem registrar dados adicionais em syslog ( /var/log/syslog) ou em diretórios de log personalizados. Observe que os diretórios de log personalizados devem estar em um caminho no qual o serviço possa gravar (normalmente SNAP_DATA).

Obtendo um Core Dump

Para habilitar os dumps principais, você precisa configurar um local para gravá-los através do sysfs. Por exemplo, você pode usar

$ echo "/tmp/core.%e.%p" > /proc/sys/kernel/core_pattern

para garantir que seus coredumps sejam gravados no /tmpdiretório, independentemente de onde foi CWDo processo que recebeu um sinal.

dholbach
fonte
Obrigado! Além disso, eu tenho uma dica que uma maneira fácil de depurar problemas com um serviço não iniciar é temporariamente remova o comentário da daemon: simplelinha para torná-lo comportar-se como um aplicativo regular, e, em seguida, iniciar manualmente o serviço "appified" comosudo /snap/bin/<servicename>
David Planella
é possível redirecionar os logs para um arquivo personalizado em vez de diário?
Ankur Bhatia