Linuxのログの見方|journalctlと/var/logでエラーの原因を探す【初心者向け】

前の記事では、systemd timer で定期実行を作り、journalctl で結果を確かめました。今回は、その journalctl を中心に、Linux のログの見方を学びます。

サーバーを使い始めたころの私は、何かが動かないと、とりあえず設定を書きかえたり再起動したりしていました。ある先輩に「まずログを見て。答えはだいたいそこに書いてあるよ」と言われてログを開いたら、本当に「ファイルが見つかりません」とはっきり書いてありました。それ以来、困ったときは最初にログを見るようにしています。

この記事では、わざとエラーを起こして、そのログを探す練習をします。

💡
この記事でわかること
  • Linux のログがどこに記録されているか(journal と /var/log)
  • journalctl で、新しい順・サービスごと・時間・重要度でしぼり込む方法
  • journalctl -f で、ログをリアルタイムで見る方法
  • logger で、自分でログを書き込む方法
  • 失敗したサービスのログから、原因を見つける流れ
🔰
この記事の前提
  • systemctl status でサービスの様子を見られる
  • grep・tail・less を使える
  • sudo(=許可されたユーザーが、コマンドの前につけて、そのコマンドだけを管理者の権限で実行するしくみ)を使える

まだの方は、前の記事「systemd timerとcronの違い|Linuxの定期実行を使い分ける【初心者向け】」から読むのがおすすめです。

💡
用語メモ
  • URL:Web ページなどの場所を表すアドレス(https:// で始まる文字列)
  • トークン:ログインした状態や、使ってよい範囲を表す文字列。APIキーと同じく、パスワードと同じように人に見せてはいけません
  • systemd:Linux の起動や、サービスの起動・停止・自動起動を管理するしくみ
  • サービス:systemd が管理する、裏でずっと動いて仕事を受け付けるプログラム(デーモン)。例:ssh.service

用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。


結論:まず「新しい順・サービス名・エラーだけ」でしぼる

やりたいこと コマンド
最新のログを20行見る journalctl -n 20
1つのサービスのログを見る journalctl -u 名前
最近10分のログを見る journalctl --since "10 min ago"
エラー以上だけを見る journalctl -p err
今回の起動以降だけを見る journalctl -b
リアルタイムで見つづける journalctl -f
古いしくみのログファイル /var/log/ の中

ログを探す流れ

準備:ログの置き場所を見てみる

  • 1
  • 2
  • 3
mkdir -p ~/linux-practice/log-test
cd ~/linux-practice/log-test
ls /var/log

🖥️
この記事の出力例について

ここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
kaito@demo:~/linux-practice$ mkdir -p ~/linux-practice/log-test
kaito@demo:~/linux-practice$ cd ~/linux-practice/log-test
kaito@demo:~/linux-practice/log-test$ ls /var/log
README            apt            btmp      exim4    lastlog  runit  wtmp.db
alternatives.log  bootstrap.log  dpkg.log  journal  private  wtmp

最近の Debian では、ほとんどのログは journal(systemd のログのしくみ)に記録されています。昔の記事によく出てくる /var/log/syslog は、Debian 12 以降では最初から入っていないことがあります。検証環境(Debian 13)でも、syslog はありませんでした。見つからなくても心配いりません。

journal がどれくらいディスク(=データをしまっておく部品)を使っているかも見ておきましょう。

  • 1
journalctl --disk-usage

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
kaito@demo:~/linux-practice/log-test$ journalctl --disk-usage
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Archived and active journals take up 8M in the file system.

最初の3行の Hint は、systemd の記事でも出てきた「一般ユーザーなので、ほかのユーザーやシステムのログは見えていません」という注意です。エラーではありません。

毎回 sudo をつけるのが大変なら、自分を adm グループ(=ユーザーをまとめたチーム)に入れる方法もあります(sudo usermod -aG adm kaito)。VPS の初期設定の記事で見たとおり、グループの変更はログインし直してから使われます。入ったあとは、sudo なしでもシステム全体のログが見られ、Hint も出なくなります。自分のパソコンや、自分だけが使う VPS なら便利ですが、ログを見られる人が増えるということでもあるので、ほかの人と共有するサーバーでは慎重に決めましょう。


STEP 1:最新のログを見る

  • 1
journalctl -n 20 --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
kaito@demo:~/linux-practice/log-test$ journalctl -n 20 --no-pager
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Nov 01 03:44:37 demo sudo[2043]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:44:44 demo sudo[2043]: pam_unix(sudo:session): session closed for user root
Nov 01 03:44:51 demo sudo[2050]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl daemon-reload
Nov 01 03:44:51 demo sudo[2050]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:44:51 demo sudo[2050]: pam_unix(sudo:session): session closed for user root
Nov 01 03:44:52 demo sudo[2078]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl enable --now kaito-report.timer
Nov 01 03:44:52 demo sudo[2078]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:44:52 demo sudo[2078]: pam_unix(sudo:session): session closed for user root
Nov 01 03:45:00 demo report.sh[2108]: kaito-report: 実行しました
Nov 01 03:46:00 demo report.sh[2115]: kaito-report: 実行しました
Nov 01 03:47:00 demo report.sh[2118]: kaito-report: 実行しました
Nov 01 03:47:39 demo sudo[2123]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl disable --now kaito-report.timer
Nov 01 03:47:39 demo sudo[2123]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:39 demo sudo[2123]: pam_unix(sudo:session): session closed for user root
Nov 01 03:47:42 demo sudo[2153]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/rm /etc/systemd/system/kaito-report.timer /etc/systemd/system/kaito-report.service
Nov 01 03:47:42 demo sudo[2153]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:42 demo sudo[2153]: pam_unix(sudo:session): session closed for user root
Nov 01 03:47:43 demo sudo[2157]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl daemon-reload
Nov 01 03:47:43 demo sudo[2157]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:43 demo sudo[2157]: pam_unix(sudo:session): session closed for user root

一般ユーザーの kaito に見えるのは、自分に関係するログだけです。ここでは、前の記事のタイマーの実行(report.sh)や、kaito が打った sudo の記録が並んでいます。

1行は「いつ・どのパソコンで・どのプログラムが・何と言ったか」の順に並んでいます。一般ユーザーのままだと、システム全体のログが見られないことがあります。そのときは sudo をつけます。

  • 1
sudo journalctl -n 20 --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
kaito@demo:~/linux-practice/log-test$ sudo journalctl -n 20 --no-pager
Nov 01 03:44:51 demo sudo[2050]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl daemon-reload
Nov 01 03:44:51 demo sudo[2050]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:44:51 demo sudo[2050]: pam_unix(sudo:session): session closed for user root
Nov 01 03:44:52 demo sudo[2078]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl enable --now kaito-report.timer
Nov 01 03:44:52 demo sudo[2078]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:44:52 demo sudo[2078]: pam_unix(sudo:session): session closed for user root
Nov 01 03:45:00 demo report.sh[2108]: kaito-report: 実行しました
Nov 01 03:46:00 demo report.sh[2115]: kaito-report: 実行しました
Nov 01 03:47:00 demo report.sh[2118]: kaito-report: 実行しました
Nov 01 03:47:39 demo sudo[2123]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl disable --now kaito-report.timer
Nov 01 03:47:39 demo sudo[2123]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:39 demo sudo[2123]: pam_unix(sudo:session): session closed for user root
Nov 01 03:47:42 demo sudo[2153]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/rm /etc/systemd/system/kaito-report.timer /etc/systemd/system/kaito-report.service
Nov 01 03:47:42 demo sudo[2153]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:42 demo sudo[2153]: pam_unix(sudo:session): session closed for user root
Nov 01 03:47:43 demo sudo[2157]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/timer-test ; USER=root ; COMMAND=/usr/bin/systemctl daemon-reload
Nov 01 03:47:43 demo sudo[2157]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Nov 01 03:47:43 demo sudo[2157]: pam_unix(sudo:session): session closed for user root
Nov 01 03:47:57 demo sudo[2197]:    kaito : TTY=pts/0 ; PWD=/home/kaito/linux-practice/log-test ; USER=root ; COMMAND=/usr/bin/journalctl -n 20 --no-pager
Nov 01 03:47:57 demo sudo[2197]: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)

sudo をつけると Hint は出ず、システム全体のログから最新の20行が表示されます。最後の2行は、今打った sudo journalctl そのものの記録です。どんな行が並ぶかは、そのときのパソコンの状態によって変わります。

--no-pager をつけないと、less で開きます。less のときは、q で閉じ、/ で検索できます。


STEP 2:自分でログを書き込んでみる(logger)

logger を使うと、自分のメッセージをログに書き込めます。-t で目印(タグ)をつけておくと、あとで探しやすくなります。

  • 1
  • 2
  • 3
logger -t kaito-app "練習: 処理を始めました"
logger -t kaito-app -p user.err "練習: ERROR data.csv が見つかりません"
journalctl -t kaito-app --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
kaito@demo:~/linux-practice/log-test$ logger -t kaito-app "練習: 処理を始めました"
kaito@demo:~/linux-practice/log-test$ logger -t kaito-app -p user.err "練習: ERROR data.csv が見つかりません"
kaito@demo:~/linux-practice/log-test$ journalctl -t kaito-app --no-pager
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Nov 01 03:47:58 demo kaito-app[2201]: 練習: 処理を始めました
Nov 01 03:48:00 demo kaito-app[2202]: 練習: ERROR data.csv が見つかりません

検証環境では、-p user.err で書いたエラーの行は、赤い太字で表示されました。

次に、重要度(-p)と時間(--since)でしぼり込みます。

  • 1
journalctl -p err --since "10 min ago" --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
kaito@demo:~/linux-practice/log-test$ journalctl -p err --since "10 min ago" --no-pager
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Nov 01 03:48:00 demo kaito-app[2202]: 練習: ERROR data.csv が見つかりません

「処理を始めました」の行は出ず、エラーの行だけが表示されました。一般ユーザーで実行しているので、ほかのユーザーやシステムのエラーは、そもそも表示されません(sudo をつけると、システムのエラーも並びます)。

重要度(-p) 意味
err エラー(何かが失敗した)
warning 注意(失敗ではないが、気をつけたほうがよい)
info お知らせ(ふつうの記録)

-p err は「エラーと、それより重いもの」だけを表示します。


STEP 3:リアルタイムで見る(-f)

-f をつけると、新しいログが出るたびに表示されつづけます。tail -f と同じ考え方です。

  • 1
journalctl -t kaito-app -f

このターミナルはそのままにして、もう1つターミナルを開いて、次を打ちます。

  • 1
logger -t kaito-app "練習: リアルタイムで見えていますか"

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
kaito@demo:~/linux-practice/log-test$ journalctl -t kaito-app -f
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
Nov 01 03:47:58 demo kaito-app[2201]: 練習: 処理を始めました
Nov 01 03:48:00 demo kaito-app[2202]: 練習: ERROR data.csv が見つかりません
Nov 01 03:48:11 demo kaito-app[2218]: 練習: リアルタイムで見えていますか
^C

最後の リアルタイムで見えていますか の行が、2つ目のターミナルで logger を打ったとたんに追加されました。確かめたら、Ctrl + C(画面では ^C)で止めます。

Debian 13での実行画面

STEP 4:失敗したサービスのログから原因を探す

わざと失敗する、その場かぎりのサービスを動かしてみます。systemd-run は、.service ファイルを書かずに、コマンドを1回だけサービスとして動かせる道具です。ここでは、ないフォルダを ls させて失敗させます。

  • 1
  • 2
sudo systemd-run --unit=kaito-fail ls /kaito-nothing-here
systemctl status kaito-fail --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
kaito@demo:~/linux-practice/log-test$ sudo systemd-run --unit=kaito-fail ls /kaito-nothing-here
Running as unit: kaito-fail.service; invocation ID: 1f99ea08e5614b36bc3b09bdb86468c0
kaito@demo:~/linux-practice/log-test$ systemctl status kaito-fail --no-pager
× kaito-fail.service - [systemd-run] /usr/bin/ls /kaito-nothing-here
     Loaded: loaded (/run/systemd/transient/kaito-fail.service; transient)
  Transient: yes
     Active: failed (Result: exit-code) since Sun 2026-11-01 03:48:17 JST; 1s ago
   Duration: 18ms
 Invocation: 1f99ea08e5614b36bc3b09bdb86468c0
    Process: 2223 ExecStart=/usr/bin/ls /kaito-nothing-here (code=exited, status=2)
   Main PID: 2223 (code=exited, status=2)
   Mem peak: 1.7M
        CPU: 4ms

Active: failed (Result: exit-code) は「プログラムがエラーの番号を返して終わった」、status=2 は「エラーの番号が 2 だった」という意味です。invocation ID は、実行するたびに変わります。

今回のサービスは sudo(root)で動かしたので、一般ユーザーの kaito が見た status には、ログの行は表示されませんでした。

Debian 13での実行画面

status に出るのは「失敗した」という結果だけです。理由を見るには、sudo journalctl -u でサービスのログを見ます。

  • 1
  • 2
sudo journalctl -u kaito-fail --no-pager
systemctl list-units --failed --no-pager

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
kaito@demo:~/linux-practice/log-test$ sudo journalctl -u kaito-fail --no-pager
Nov 01 03:48:17 demo ls[2223]: ls: cannot access '/kaito-nothing-here': No such file or directory
kaito@demo:~/linux-practice/log-test$ systemctl list-units --failed --no-pager
  UNIT               LOAD   ACTIVE SUB    DESCRIPTION
● kaito-fail.service loaded failed failed [systemd-run] /usr/bin/ls /kaito-nothing-here

Legend: LOAD   → Reflects whether the unit definition was properly loaded.
        ACTIVE → The high-level unit activation state, i.e. generalization of SUB.
        SUB    → The low-level unit activation state, values depend on unit type.

1 loaded units listed.

ls: cannot access '/kaito-nothing-here': No such file or directory(そのようなファイルやフォルダはない)が、失敗の理由です。list-units --failed には、失敗したまま残っているサービスが並びます。

読むときのコツは、結果と理由を分けて見ることです。failed や status=2 は「失敗しました」という結果だけで、理由はプログラム自身が書いたログの行に書かれていることがほとんどです。ログに「Failed」などの行が並ぶときは、その少し上の行を見ましょう。

💡
「いつ起きたか」でしぼるときの書き方(文章だけで説明します)

「昨日の夜、タイマーの作業が動かなかった」のように、時刻の見当がついているときは、時間でしぼると速く見つかります。

  • --since today:今日の0時から。--since yesterday --until today で「昨日の1日分」です。
  • --since "2026-11-01 03:00" --until "2026-11-01 04:00":日時を決めて、そのあいだだけ。日時は "年-月-日 時:分" の形で、パソコンのタイムゾーン(この記事では日本時間)で書きます。
  • -b -1:1つ前の起動のあいだのログ。「再起動したら直った(けど原因を知りたい)」ときに使います。前の起動のログが残っているのは、ログをディスクに保存する設定のときだけです。検証環境の ls /var/log には journal フォルダがあったので、保存される設定でした。journalctl --list-boots で、残っている起動の一覧を見られます。
  • -o short-iso:時刻を 2026-11-01T03:48:17+09:00 のような、年とタイムゾーンつきの形で表示します。AI に聞くときや、ほかのパソコンのログとくらべるときに、まちがえにくくなります。

これらは、STEP 4 の -u 名前 や -p err と組み合わせて使えます。


/var/log のファイルも見てみる

journal 以外に、ファイルとして残っているログもあります。たとえば、apt でソフトを入れた記録です。

  • 1
  • 2
tail -n 15 /var/log/apt/history.log
grep -c "Install:" /var/log/apt/history.log

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
kaito@demo:~/linux-practice/log-test$ tail -n 15 /var/log/apt/history.log
Requested-By: kaito (1000)
Install: libcurl4t64:amd64 (8.14.1-2+deb13u7, automatic), curl:amd64 (8.14.1-2+deb13u7)
End-Date: 2026-11-01  03:40:16

Start-Date: 2026-11-01  03:40:28
Commandline: apt install openssh-server
Requested-By: kaito (1000)
Install: libwrap0:amd64 (7.6.q-36, automatic), openssh-client:amd64 (1:10.0p1-7+deb13u4, automatic), ucf:amd64 (3.0052, automatic), libcbor0.10:amd64 (0.10.2-2, automatic), libxmuu1:amd64 (2:1.1.3-3+b4, automatic), libfido2-1:amd64 (1.15.0-1+b1, automatic), libxau6:amd64 (1:1.0.11-1, automatic), libxcb1:amd64 (1.17.0-2+b1, automatic), openssh-server:amd64 (1:10.0p1-7+deb13u4), runit-helper:amd64 (2.16.4, automatic), libx11-data:amd64 (2:1.8.12-1, automatic), xauth:amd64 (1:1.1.2-1.1, automatic), libwtmpdb0:amd64 (0.73.0-3+deb13u1, automatic), openssh-sftp-server:amd64 (1:10.0p1-7+deb13u4, automatic), libxext6:amd64 (2:1.3.4-1+b3, automatic), libx11-6:amd64 (2:1.8.12-1, automatic), ncurses-term:amd64 (6.5+20250216-2, automatic), libxdmcp6:amd64 (1:1.1.5-1, automatic)
End-Date: 2026-11-01  03:40:30

Start-Date: 2026-11-01  03:42:23
Commandline: apt install ufw
Requested-By: kaito (1000)
Install: libnetfilter-conntrack3:amd64 (1.1.0-1, automatic), iptables:amd64 (1.8.11-2, automatic), ufw:amd64 (0.36.2-9), libip4tc2:amd64 (1.8.11-2, automatic), libnfnetlink0:amd64 (1.0.2-3, automatic), libip6tc2:amd64 (1.8.11-2, automatic)
End-Date: 2026-11-01  03:42:24
kaito@demo:~/linux-practice/log-test$ grep -c "Install:" /var/log/apt/history.log
17

前の記事までに入れた openssh-server・ufw(=Debian・Ubuntu で使える、ファイアウォールをかんたんに設定するための道具)の記録が見えます。いちばん上の curl の記録は、検証の準備で入れたときのものです。grep -c の数字は、このパソコンでこれまでに apt で入れた回数なので、人によってちがいます。

「いつ、何を入れたか」がわかるので、「ソフトを入れてからおかしくなった」ときの手がかりになります。

🚫
ログを消さない・空にしない(文章だけで説明します)

ディスクがいっぱいだからといって、/var/log の中のファイルを rm で消したり、中身を空にしたりしないでください。原因を探す手がかりがなくなるうえ、動いているプログラムがおかしくなることがあります。journal の容量を減らす journalctl --vacuum-size などのコマンドもありますが、意味を理解してから使いましょう。容量の調べ方は Lv5 の記事でくわしく説明します。

🤖 詰まったらAIに聞こう:ログの意味がわからない

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
Linuxの初心者です。サービスが動かないので、ログを見ました。
このログから考えられる原因と、次に確かめることを教えてください。
専門用語は、やさしく言いかえてください。

【動かないもの】例:自分で作ったkaito-report.service
【systemctl status 名前 --no-pager の結果】ここに貼る
【journalctl -u 名前 -n 50 --no-pager の結果】ここに貼る(個人情報は伏せる)
【直前にしたこと】例:スクリプトの場所を変えた、aptで更新した

🔒
AIに貼る前に:秘密情報やパスワードは貼らない

ログには、IP アドレス、ユーザー名、メールアドレス、ファイルのパス、ときにはトークンや URL のパラメーターが含まれます。全部を貼らず、エラーの前後の数十行だけにしぼり、気になる部分は「***」やダミーに置き換えてから貼りましょう。SSH(=ネットワークの向こうのコンピューターに、暗号化して安全にログインし、操作するしくみ)のログイン記録(sshd の行)は、とくに IP アドレスが多く出ます。


後片づけ

失敗したサービスの記録を消し、練習用のディレクトリを消します。logger で書いたログは journal に残りますが、時間がたつと古いものから自動で整理されるので、そのままで大丈夫です。

  • 1
  • 2
  • 3
  • 4
  • 5
sudo systemctl reset-failed kaito-fail
systemctl list-units --failed --no-pager
cd ~/linux-practice
rm -r log-test
ls

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
kaito@demo:~/linux-practice/log-test$ sudo systemctl reset-failed kaito-fail
kaito@demo:~/linux-practice/log-test$ systemctl list-units --failed --no-pager
  UNIT LOAD ACTIVE SUB DESCRIPTION

0 loaded units listed.
kaito@demo:~/linux-practice/log-test$ cd ~/linux-practice
kaito@demo:~/linux-practice$ rm -r log-test
kaito@demo:~/linux-practice$ ls
archive-test  chmod-test  edit-test  find-test  grep-test  link-test  perm-test  redirect-test

よくある質問

Q. SSH で、だれかがログインしようとした記録を見たいです。

SSH サーバーのログは、sudo journalctl -u ssh --since today --no-pager で見られます。VPS をインターネットに出していると、知らない相手が何度もログインを試した記録(Invalid user や Failed password など)が並ぶことがあります。鍵だけでログインする設定(VPS の初期設定の記事)にしていれば、パスワードを当てられてログインされる心配は、ほとんどなくなります。

Q. journalctl -b -1 で「Specified boot ID ... not found」のように表示されます。

1つ前の起動のログが残っていない、という意味です。ログをディスクに保存しない設定のパソコンや、再起動をまだ1回もしていないパソコン、WSL などでは、こうなることがあります(環境により異なります)。journalctl --list-boots で、残っている起動を確かめましょう。

Q. journal が、ディスクをどれくらい使ってよいかは決まっていますか?

systemd は、ディスクの空き具合に合わせて、journal が使う量に上限を決めています(初期設定では、ディスクの大きさの1割ほど、最大 4GB まで。設定や環境により異なります)。今の使用量は、この記事の journalctl --disk-usage で確かめられます。減らし方は、上の🚫の箱のとおり、Lv5 の記事で説明します。


まとめ

  • 最近の Debian では、ログの多くは journal にある。/var/log/syslog がなくてもあわてない
  • journalctl -n 20・-u 名前・--since・-p err・-b でしぼり込む
  • journalctl -f でリアルタイムに見る。logger -t で自分でも書き込める
  • 失敗したサービスは systemctl status → journalctl -u。「Failed」の少し上の行に理由がある
  • /var/log/apt/history.log で、いつ何を入れたかがわかる
  • ログは消さない。AI に貼るときは、しぼって伏せてから

次の記事では、Docker を学びます。n8n のようなアプリを、パソコンを汚さずに動かせる「コンテナ(=アプリと、動かすのに必要なものをひとまとめにした箱)」のしくみです。


次に読む記事


関連する記事