スナップでのシステムサービスの仕組み


9

スナップを作成するときに、snapcraft.yamlファイルの構文に従って、daemonキーワードを追加して、アプリをシステムサービスとして実行することを指定できます。そのような宣言の例として:

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

しかし、一瞬でシステムサービスになるとはどういう意味ですか?つまり、それらのライフサイクルは何ですか(開始、再起動、停止...)?私はいつものツール(とシステムで実行してそれらを監視することができpstopなど)?

回答:


8

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

サービスをテストする

サービスをテストするには、まずインストールする必要があります。インストール後、systemdのsystemctlコマンドを使用して、サービスが開始され、期待どおりに実行されているかどうかを確認できます。次に例を示します。

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

シグナルを受信したプロセス/tmpの場所CWDに関係なく、コアダンプがディレクトリに書き込まれるようにします。


ありがとう!また、サービスが開始しないという問題をデバッグする簡単な方法は、一時的にdaemon: simple行のコメントを外して通常のアプリとして動作させることです。その後、「適用された」サービスを手動で開始しますsudo /snap/bin/<servicename>
David Planella

ログをジャーナルではなくカスタムファイルにリダイレクトできますか?
Ankur Bhatia
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.