💨
systemdについて
systemdとは
- Linuxサービス・プロセスを管理する。
- システムを起動したり、停止したりする元のプログラム
- systemdがあれば、異なるサービスの管理を同一の方法でできるという利点があるらしい。
仕組み
ざっとですが、以下がわかりやすかったので引用
- 電源投入により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