LoginSignup
1
0

【2023年7月版】systemd, journalctl メモ

Last updated at Posted at 2023-07-01

はじめに

すぐにわすれる systemd 関連のメモ

最新に加筆修正しました。 

 ↓

【2024年1月版】中年エンジニアのための systemd メモ 【systemctl, journalctl すぐ忘れてしまう人向け】

systemd

主なデーモンプロセス

systemd ではデーモンプロセスが連携して動作する

プロセス 説明
systemd systemdのメインプロセス
systemd-journal ジャーナル管理プロセス
systemd-logind ログイン処理プロセス
systemd-udevd デバイス動的検知プロセス

主な Unit

systemd では、システムの起動処理は Unit と呼ばれる処理単位に分割される

Unitの拡張子 説明
service 各種サービスの起動
device 各種デバイス、udevのデバイス認識で自動作成
mount ファイルシステムのマウント、/etc/fstabから自動作成
swap スワップ領域、/etc/fstabから自動作成
target Unitのグループ
socket ソケットの監視〜接続時にサービスの起動
timer サービスの起動の予約

ランレベルとターゲットの対応

ランレベル 説明
0 シャットダウン
1 シングルユーザモード
2 ネットワーク無しのマルチユーザモード
3 通常のマルチユーザモード(テキストログイン)
4 未使用
5 グラフィカルログインによるマルチユーザモード
6 再起動
ランレベル ターゲット
0 poweroff.target
1 rescue.target
2, 3, 4 multi-user.target
5 graphical.target
6 reboot.target

主な systemctl のサブコマンド

サブコマンド 説明
start サービスを起動
stop サービスを停止
restart サービスを再起動
reload サービスの設定を再読み込み
status サービスの稼働状況の表示
is-active サービスが起動しているかどうか確認
enable システム起動時にサービスを起動するように設定
disable システム起動時にサービスを起動しないように設定
is-enabled システム起動時にサービスが起動されるかどうか確認、aliasの場合もある
mask Unitを起動できないように指定
unmask Unitのmaskを解除
kill Unitへシグナルを送る
daemon-reload 設定を再読み込み
cat Unitファイルの内容表示
list-units 起動しているUnitの表示
list-unit-files すべてのUnitの表示
list-dependencies Unitの依存関係の表示
reboot システムの再起動
poweroff システムの停止
rescue シングルユーザモード
emergency 緊急モード

主なサブコマンドのオプション

オプション 説明
-t, --type= 種類を指定
--state= 状態を指定
-l, --full 省略せずに表示
-a, --all Unitすべてを表示
-s, --signal= シグナルの指定
--no-pager ページャ無しの表示

Unit 設定ファイル

主なセクション

セクション名 説明
Unit ユニットの説明、ドキュメンテーションへのリンク、他のユニットに対する依存関係を定義
Service サービスユニットに特有で、実行するプロセスの動作を定義
Socket ソケットユニットで使用され、ソケットの設定を定義
Install ユニットがどのように "enabled" (有効化) や "disabled" (無効化) されるかを定義
Timer タイマーユニットで使用され、定期的にまたは特定の時間にユニットを起動するためのタイマーを定義
Mount マウントユニットで使用され、特定のファイルシステムのマウントポイントを定義
Path パスユニットで使用され、特定のファイルやディレクトリの存在や変更を監視し、それに応じたユニットを定義
Network ネットワークユニットで使用され、ネットワーク接続を定義
Automount 自動マウントユニットで使用され、アクセス時に自動マウントを定義

主なパラメータ

セクション パラメータ 説明
Unit Description ユニットの概要を提供するフリーテキストフィールド
Documentation ユニットに関するドキュメンテーションのURLを指定
After, Before 他のユニットに対する順序依存性を指定
Service ExecStart サービスを開始するためのコマンド
ExecStop サービスを停止するためのコマンド
Restart サービスが失敗したときの再起動ポリシー
Socket ListenStream, ListenDatagram ソケットが待ち受けるアドレスとポート
Accept サービスが接続ごとに新しいプロセスを生成するかどうか
Install WantedBy ユニットがインストールされたときに起動するターゲット
Alias ユニットの別名
Timer OnBootSec システム起動後にタイマーが起動するまでの時間
OnUnitActiveSec 指定したユニットが最後にアクティブになってからタイマーが起動するまでの時間
Mount What マウントするリソースのパス
Where マウントポイントのパス
Type ファイルシステムの種類
Path PathExists 指定したパスが存在する場合にユニットを起動
PathChanged 指定したパスが変更された場合にユニットを起動
Network DHCP DHCPを使用するかどうか
Address 静的IPアドレスの設定
Automount Where マウントポイントのパス
TimeoutIdleSec アクセスがない場合の自動アンマウントまでの時間

systemd-delta コマンド

systemd-delta [-t オプション] [ディレクトリ]

オプション 説明
-t, --type= 差分の種類を指定。可能な値は extended, masked, equivalent, redirected, overridden
--no-pager 出力のページングを無効
--no-legend 凡例を非表示
--system システムユニットの差分を表示
--user ユーザユニットの差分を表示
--runtime ランタイム設定の差分を表示
--global グローバル設定の差分を表示

journalctl

主なオプション

オプション 説明
-b, --boot 現在のブートまたは特定のブートのジャーナルメッセージを表示
-f, --follow ログがリアルタイムで更新されると、その更新を表示
-u, --unit=, _SYSTEMD_UNIT 特定のシステムユニットのジャーナルメッセージを表示
-k, --dmesg カーネルメッセージのみを表示
-p, --priority= 指定された優先度またはそれより重要なメッセージを表示
_PID= 指定されたPIDのメッセージを表示
_UID= 指定されたUIDのメッセージを表示
-r, --reverse ジャーナルエントリを最新から最初へと逆順に表示
-S, --since= 指定した日時以降のジャーナルメッセージを表示
-U, --until= 指定した日時までのジャーナルメッセージを表示
--no-pager ページングを無効にし、すべてのログを一度に表示
--no-hostname ログエントリからホスト名を除外
-x, --catalog 可能な場合、メッセージカタログから追加情報を取得して表示
-o, --output= 指定されたフォーマットでジャーナルメッセージを表示
-n, --lines= 末尾から指定された行数を表示、デフォルトは10行
-e, --pager-end 末尾から1000行をページャーで表示

よくつかうパターン

から

$ journalctl --since="2023-08-12 22:15:00"

まで

$ journalctl --until="2023-08-13 22:15:00"

日付範囲

$ journalctl --since="2023-08-13 22:15:00" --until="2023-08-14 23:15:00"

現在日付からの差分を指定

$ journalctl --since="$(date -d '12 hour ago' '+%Y-%m-%d %H:%M:%S')" --until="$(date -d '11 hour ago' '+%Y-%m-%d %H:%M:%S')"

降順

$ journalctl -r

最新のログをフォロー表示

$ journalctl -f

今回起動してから

$ journalctl -b

カーネルログのみ

$ journalctl -k

ページャーを使用しない

$ journalctl --no-pager
$ journalctl -xn | less

エラーログのみ、今回起動してから、追加情報込みで

$ journalctl -p 4 -xb

カレントでないjournalログフォルダから読み込んで使う、フォルダごといける

$ journalctl -D /var/log/journal/xxxxxxxxx

古いログファイルから読み込んで使う

$ journalctl --file=/var/log/journal/old.log

さいごに

わすれたくない

関連資料

LinuC レベル2 Version 10.0 201試験 出題範囲
LinuC レベル2 Version 10.0 202試験 出題範囲
Linux教科書 LinuCレベル2 Version 10.0対応

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