1
0

【Bash】systemd と systemctl

Posted at

はじめに

今回は systemd と systemctl の学習備忘録です。

OS の起動プロセス

OS は起動時に以下のフローでプロセスが起動されていきます。

最後に init プロセスが起動されますが、systemd はこの init プロセスの種類の内の一つに該当します。

  1. 電源ON
  2. BIOS の起動
    • ハードウェアの初期化・設定
    • メモリ状態のチェック
    • 起動するデバイス( OS、ディスク等 )の設定・チェック
    • bootloader の実行
  3. bootloader の起動
    • カーネルをメモリにロードする
  4. カーネルの起動
    • メモリを初期化し、initプロセスを起動するための一時的な( initramfs )をマウントする
  5. init プロセスの起動
    • /etc/init.d に格納されているプロセスを起動する

init プロセスとは

プロセスはメモリを利用して動くプログラムである。
一方で、initプロセス はシステム起動時において最初に起動される、他のプロセスを起動する役目を持ったプロセスを指す。

init プロセスは複数種類があるが、よく使われるのは systemd である。

initプロセスの種類 説明
SysVinit 並列起動できずに起動するのに時間がかかる init プロセス
Upstart サービスの起動準備が整ったらイベントを受け取り、並列にサービスを起動する
systemd 細かい制御が可能で、必要なサービスのみ並列に高速に起動することができる

systemctl コマンド

systemd で制御しているサービスを管理するコマンド

systemctl オプション サービス名 のように利用する。

オプション 説明
start サービスを起動
stop サービスを停止
restart サービスを再起動
reload サービスに新しい設定を読み込む
status サービスの状態を確認する
enable OS 起動時にサービスが起動されるようにする
disable OS 起動時にサービスが起動しないようにする
daemon-reload 新たにサービスを作成した場合に設定を読み込み直す

設定ファイルを格納したディレクトリ

/usr/lib/systemd/system

主に各サービスの設定を記述したファイルを格納

/etc/systemd/system

主に /usr/lib/systemd/system に格納したファイルのリンクを格納

Unit とは

systemd が立ち上げるプログラムの単位

設定内容一覧

Unit セクション : 各ユニットの説明や、依存関係を設定
  • Description: Unit の説明文
  • Requires: この Unit が必要とする別の Unit
  • Before: この Unit より後に起動すべき Unit
Service セクション : 実行する処理内容や作業ディレクトリなど詳細な設定
  • User: 実行ユーザ
  • ExecStart: サービスの起動コマンド
  • WorkingDirectory: サービスが実行されるときのカレントディレクトリ
Install セクション : enable / disable 時の挙動の設定
  • WantedBy: 動作モード

おわりに

systemctl と systemd を使いこなして、自分好みの環境を作りましょう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0