Ubuntu – How do system services work in snaps


When creating a snap, and according to the syntax of the snapcraft.yaml file, the daemon keyword can be added to specify that the app will be run as a system service. As an example of such declaration:

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

However, what does it exactly mean to be a system service in a snap? That is, what's their lifecycle (start, restart, stop…)? Can I monitor them running in the system with the usual tools (ps, top, etc)?

Best Answer

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

Testing a service

To test a service it must be installed first. Once it is installed, systemd's systemctl command can be used to see if the service starts and runs as expected, for example:

systemctl status snap.<name>.<appname>

Finding the logs

The journalctl command can be used to inspect the messages that the service sends to stdout/stderr, for example:

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

Services may log additional data to syslog (/var/log/syslog) or to custom log directories. Note that custom log directories must be in a path that the service can write to (usually SNAP_DATA).

Getting a core dump

To enable core dumps you have to configure a place to write them to through sysfs. For instance you can use

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

to ensure that your coredumps get written into the /tmp directory regardless of where CWD of the process that received a signal was.

Related Question