基本的なsystemdサービスファイルの作成


103

ユーザーがlocalhostでHTTPを介して対話するNodejsアプリケーションを開発しています。実質的にパラメーターはなく、デーモンには実質的に依存関係がなく、ログイン時間までに起動する必要があります。

起動スクリプトについては、各プラットフォームのイディオムに従います。これは、UbuntuのUpstartとFedoraのsystemdを意味します。

  • systemdシステムファイルを作成するための良いチュートリアルはありますか?
  • 知っておくべき「ベストプラクティス」はありますか?

私はこれらのリソースを見つけました:

私は主に、参照としての種類のAPIと、従うべき基本的な形式を探しています。


systemdにおよそアーチLinuxのWikiページには、サービスのファイルの書き込みについての興味深い部分を持っています。
ルディマテラ

> man systemd.service>> man systemd.unit
truezion 14

回答:


29

Systemdのマニュアルページから始めます。これらは、システムとサービスの包括的なリソースを表します。

freedesktop Systemd FAQもあります。


43
マニュアルページは役に立ちますが(もっときれいになってほしいと思います)、基本的なシステムファイルのチュートリアルはありますか?どの部品が必要か、どの部品が推奨されるか、どの部品がオプションかなど。マニュアルページは、私がsystemdシステムファイルの専門家であると想定しているようですが、そうではありません。
-beatgammit

残念ながら、私は気づいていません。おそらく、initscriptを書いているなら、あなたはすでにinitscriptの書き方を知っているという仮定があるでしょう。Archスクリプトを調べ
jasonwryan

1
ありがとう!あなたの助けと私が見つけたブログで、私は基本的なものを動かすことができました。Systemdは、upstartまたは古いsystemv initデーモンよりも優れているようです。
beatgammit

49
誰がそこに住んでいて、それから始めるのか。あなたが何をしているのか知っていればそれは素晴らしい参考ですが、聖なる牛はマニュアルページが複雑です。
ジョナサンKomar

1
@ macmadness86 OPは信頼できるソースを探していました(最後の段落を参照)。ほとんどの場合、同様のアプリのサービスファイルを読んでから、manページの特定の部分を参照するだけで十分です。実際には非常に簡単です。
-jasonwryan

180

次の例は、このリンクから着想を得たもので、実際にはすべての手順に言及しているわけではなく、ソースを示すためだけにリストされています:http : //patrakov.blogspot.com/2011/01/writing-systemd-service-files.html

ステップ1:基本的に拡張引数を使用してbashプロセスを起動するこのファイル(場所に注意)を作成しました。bashとは異なる独自のコマンドを実行できます。

[root@y500-fedora ~]# cat /etc/systemd/system/foo.service 
[Unit]
Description=foo

[Service]
ExecStart=/bin/bash -c "while true; do /bin/inotifywait -qq --event close_write /sys/class/backlight/acpi_video0/brightness; su myusername -c '/bin/xbacklight -display :0 -set $(cat /sys/class/backlight/acpi_video0/brightness)'; done"

[Install]
WantedBy=multi-user.target

ステップ2

リロードsystemd

systemctl daemon-reload

新しいサービスを開始します。

systemctl enable foo

(同様にできdisableます)

(オプション)ステップ3:マルチユーザーモード(実行レベル3)への次回の再起動時に自動的に開始する必要がありますが、すぐに開始する場合:

systemctl start foo
systemctl status foo # optional, just to verify

更新:完全を期すために、ubuntu bionicには非常に詳細なマニュアルページがあるように思われることを付け加える必要があります。RTFMはこちら


57
オフサイトのmanページへのリンクだけでなく、簡単なチュートリアルを投稿していただきありがとうございます!
トビーJ

2
systemctlには、参照用にcatコマンドのショートカットがあります。
アンディベティスワース

catコマンドのショートカットとは何ですか?パス全体を入力せずにsystemd制御ファイルを作成および編集する方法が好きですか?
JpaytonWPD

このファイルに理想的なアクセス許可は何ですか?
knocte

2
systemd.unitのmanページによると、に入れる必要があります/etc/systemd/system。/ usr / lib / systemdは、適切な配布パッケージがファイルを置く場所です。
wbkang

4

2
これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう。
スティーブンラウフ

1
@StephenRauchプレーンリンクはあまり歓迎されないことを知っていますが、これは大きなトピックであり、簡単に答えにまとめることはできません。
カラカル

これは私が見つけた最も読みやすいガイドでした。これは良い答えです。:-)
MODを適切に処理する

DigitalOceanには、非常に包括的なチュートリアルと関連ドキュメントのセットもあります。digitalocean.com/ community / tutorials /
irbanana
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.