Как системные сервисы работают в оснастке

9

При создании оснастки, а также в соответствии с синтаксисом файла snapcraft.yaml , то daemonключевое слово может быть добавлено , чтобы указать , что приложение будет работать в качестве системной службы. В качестве примера такого объявления:

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

Однако что конкретно означает быть системным сервисом в одно мгновение? То есть каков их жизненный цикл (запуск, перезапуск, остановка ...)? Могу ли я контролировать их работает в системе с обычными инструментами ( ps, topи т.д.)?

Дэвид Планелла
источник

Ответы:

8

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

Тестирование сервиса

Чтобы проверить сервис, он должен быть установлен первым. После установки systemctlкоманду systemd можно использовать, чтобы увидеть, запускается ли служба и работает ли она должным образом, например:

systemctl status snap.<name>.<appname>

Нахождение журналов

Команда journalctlможет использоваться для проверки сообщений, которые служба отправляет в stdout/ stderr, например:

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

Сервисы могут записывать дополнительные данные в syslog ( /var/log/syslog) или в пользовательские каталоги журналов. Обратите внимание, что пользовательские каталоги журналов должны находиться в пути, в который служба может записывать (обычно SNAP_DATA).

Получение дампа ядра

Чтобы включить дампы ядра, вы должны настроить место для записи их через sysfs. Например, вы можете использовать

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

чтобы гарантировать, что ваши coredumps будут записаны в /tmpкаталог независимо от того, где CWDнаходится процесс, который получил сигнал.

dholbach
источник
Спасибо! Кроме того, я получил совет о том, что простой способ отладки проблем, когда служба не запускается, состоит в том, чтобы временно раскомментировать daemon: simpleстроку, чтобы она работала как обычное приложение, а затем вручную запустить «назначенную» службу какsudo /snap/bin/<servicename>
David Planella
Можно ли перенаправить журналы в пользовательский файл вместо журнала?
Анкур Бхатия