目的:
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
サービスの作成:
- サービスで実行する処理(スクリプト等)を作成する。
- /etc/systemd/system に unit定義ファイル (下記参照) を作成する。
- sudo systemctl list-unit-files --type=service で作成したサービスが表示されることを確認する。
- サービスを起動する。(systemctl start [unit名])
- 自動起動を設定する。(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 件のコメント:
コメントを投稿