💨

systemdについて

2023/12/21に公開

systemdとは

  • Linuxサービス・プロセスを管理する。
  • システムを起動したり、停止したりする元のプログラム
  • systemdがあれば、異なるサービスの管理を同一の方法でできるという利点があるらしい。

仕組み

ざっとですが、以下がわかりやすかったので引用
https://dev.classmethod.jp/articles/systemd-getting-started/

  • 電源投入によりBIOSが起動する。
  • BIOSからブートローダーが呼び出される。
  • ブートローダーがLinuxカーネルを起動する。
  • Linuxカーネルがinitプロセス(PID 1)を起動する。
  • ネットワークの設定 -図にはない
  • その他のOSが起動するまでの処理 -図にはない

これらが終わるとログイン画面が表示され、システムが利用可能な状態となります。
ちなみにこの処理の流れをブートシーケンスっていうらしい。

*こんなのみてもわかるか!って後から見たときにおもいそうなので補足

BIOSとは

システムが起動されたときに一番最初に起動されるファーム
1 ハードウェアのチェックと初期化をする
2 ブートローダーを探して実行する

ブートローダー

OSを起動するためのソフトウェア
1 2次ブートローダーをメモリにロード・実行
2 起動したいOSが保存されているストレージを見つけて初期化プログラムをロード・実行

カーネル

  • コンピューターの初期化処理
  • ハードウェアの資産管理をする

プロセスIDが1であるinitプロセスが起動
「最近はinitプロセスではなくsystemd」

Unit

systemdはunitという単位で実行される。

以下のコードではシステムの起動・停止を定義している。
例) /usr/lib/systemd/nginx.service

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target

最後に

覚えておきたいLinuxコマンド

プロセス状況を確認する

ps aux

使われてるportを確認する

sudo ss-antup

ログを確認する

jornalctl -u 〇〇〇

*学習アウトプット用ですのでお手柔らかにお願いします。
解釈に間違いがあれば教えて頂ければ嬉しいです。

Discussion