2020年1月17日金曜日

linux : サービスの作成、管理

目的:

Linux での サービスの作成、管理について記しておく。

概要:

サービスの作成、管理は systemctl で行う。
systemctl は rootで実行, または sudo をつけて実行する。
サービスは、"unit" 単位で管理される。

systemctl コマンド:


  • サービス起動
    $ sudo systemctl start [unit名]
  • サービス停止
    $ sudo systemctl stop [unit名]
  • サービス再起動
    $ sudo systemctl restart [unit名]
  • サービスリロード(再読み込み)
    $ sudo systemctl reload [unit名]
  • サービスステータス表示
    $ sudo systemctl status [unit名]
  • サービス自動起動有効
    $ sudo systemctl enable [unit名]
  • サービス自動起動無効
    $ sudo systemctl disable [unit名]
  • サービス自動起動設定確認
    $ sudo systemctl is-enabled [unit名]
  • サービス一覧
    $ sudo systemctl list-unit-files --type=service
  • 設定ファイルの再読込
    $ sudo systemctl daemon-reload

サービスの作成:

  1. サービスで実行する処理(スクリプト等)を作成する。
  2. /etc/systemd/system に unit定義ファイル (下記参照) を作成する。
  3.  sudo systemctl list-unit-files --type=service で作成したサービスが表示されることを確認する。
  4.  サービスを起動する。(systemctl start [unit名])
  5. 自動起動を設定する。(systemctl enable [unit名])

unit定義ファイル:

unit定義ファイルの例

[Unit]
# サービスの説明。内容は任意
Description=unit file sample
# このUnitより先に起動するべきUnitを設定
After=network.target
 
[Service]
# 実行するコマンドやスクリプトを記述
ExecStart=/usr/bin/test.sh
# サービス停止時の Kill する単位を設定
KillMode=process
# プロセスの起動方法を指定
Type=simple
# サービス停止時の再起動条件 (no は再起動しない)
Restart=no

[Install]
# 該当ユニットへの弱い依存関係を設定
WantedBy=multi-user.target

log 確認:


サービスの log確認は、
$ sudo journalctl -u [unit名]

で行う。
このlog は、/var/run/log/journal にバイナリ形式で保存され、再起動で消えるため、 log は直近の起動後のみが確認できる。
再起動で消えないようにする為には、 /var/log に journal ディレクトリを作成し、再起動する。

$ sudo mkdir /var/log/journal

$ sudo reboot

0 件のコメント:

コメントを投稿