私はsystemdを初めて使用します。無人キオスクアプリケーションを効果的に起動できるようにsystemdを設定しようとしています。
- Postgresqlがロードされた後にのみ起動されます。
- 単一の投稿ユーザーがログインした後から
- 死ぬと自動的に再起動します。
また、この設定はユーザーのログインを要求したり、他の対話を必要とせずにすぐに開始する必要がありますが、これは現在の質問の範囲外であり、その部分はすでに完了していると思います。
私はDebian 9ホストで実行されているDebian 9 qemu / kvmゲストでシステム部分を開発しています。 systemd構成が期待どおりに機能するゲストがあります。すべての要件を正しく文書化したことを確認するために、別の同じゲストを作成し、必要なツールなどを段階的にインストールしました。
2番目のゲストでは、私のアプリケーションが直接実行されると正しく実行されますが、systemdはこれに満足していません。 .serviceファイルと.targetファイルは各システムで同じ(作業ファイルは新しいシステムにコピーされ)、同じ場所にあり、同じ権限を持ちます。
少し案内されました。このブログ投稿
私の/etc/systemd/system/MyApp.target
外観は次のとおりです。
[Unit]
Description=MyApp Target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
私の/etc/systemd/system/MyApp.target.wants/MyApp.service
ファイルは次のとおりです。
[Unit]
Description=MyApp
Requires=postgresql.service
After=postgresql.service
[Service]
Type=simple
Restart=always
RestartSec=20
User=myuser
WorkingDirectory=/home/myuser/MyApp
ExecStart=/home/myuser/MyApp/MyApp.exe
#StandardOutput=journal+console
StandardOutput=console
#CapabilityBoundingSet=
[Install]
WantedBy=MyApp.target
systemctlコマンドを実行したときに表示されるエラーメッセージは次のとおりです。
~$sudo systemctl enable MyApp
デバイスを有効にできません: ファイル MyApp.service: そのファイルまたはディレクトリがありません。
~$sudo systemctl status MyApp
MyApp.service デバイスが見つかりません。
~$sudo systemd-analyze verify MyApp
dev-disk-by\x2duuid-d732e7b2\x2ddb0a\x2d42a3\x2d8f66\x2db392c05f9cbb.swap: 非アクティブデバイスにバインドされたデバイス dev-disk-by\x2duuid-d732dd2 392 c 05f9cbb.装備。あなたもやめてファイル名MyAppを準備できません:無効な引数*
セットアップ中に必要なファイルをゲストにコピーできるように、ホストとゲスト間で共有されるディレクトリを作成しました。私はsystemdが明らかにファイルシステムをアンマウントするのに問題があるかどうかを知っており、私の質問はそれに関連している可能性があります(https://github.com/systemd/systemd/issues/9869etc)だから/ etc / fstabを見ました。
機能していないVMのfstabには、作業コピーにない追加のエントリがあり、そのエントリはsystemd-analyzeエラーメッセージのUUIDと一致します。アイテムにコメントしました。これにより、他の項目が期待どおりに機能するのを防ぐことはできませんが、システムの動作は変わりません。影響を与える可能性があると思われる変更を実行するときは、常に「systemctl daemon-reload」、再起動などを実行してください。失敗したゲストから共有ファイルシステムを完全に削除しようとしました。ジョブゲストに共有ファイルシステムが存在し、正常に実行されます。
機能しない仮想マシンのfstabは次のとおりです。
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/vda1 during installation
UUID=cbb7f406-f4d6-4617-af14-33465513a57b / ext4 errors=remount-ro 0 1
# swap was on /dev/vda5 during installation
UUID=d732e7b2-db0a-42a3-8f66-b392c05f9cbb none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
私は正確にsystemdが満足していないもの、何を探すべきか、そして何を変えるべきかを知りません。この構成は、あるシステムでは完全に機能しますが、別のシステムでは機能しません。他のシステムでは、明らかに同じで同じシステムファイルを使用します。
明らかにあるから何2つのシステム間に違いがあります。誰かがこれを追跡するのを助けるために、仮想マシンと「比較」する方法を提案できますか?