大容量ファイルモードに入る条件
数字はひとつだけ:64 MiB。
ファイルが 64 MiB 以上なら、Erya はメモリーに読み込みません。読み取り専用の閲覧モードに切り替え、「access.log を大容量ファイルの読み取り専用モードで開きました(512 MB)」と表示し、ステータス行のモードが 大容量ファイル・読み取り専用 になります。
- 大きな UTF-8 テキスト → 大容量ファイル読み取り専用モード(本章)。
- 大きなバイナリ → ストリーム読みの 16 進数表示。こちらも読み取り専用(3.3.8 参照)。
- 大きな非 UTF-8 テキスト(200 MB の Big5 出力など)→ ストリームで復号できないため、バイナリとして 16 進数表示で開きます。編集したいなら外部で UTF-8 に変換してください。
このモードでできること
読む・探す・コピーする。ただし変更はできません。
できること
- スクロール、ページ送り、Ctrl+Home/Ctrl+End
- Ctrl+G で行へ移動
- Ctrl+W 検索と F3
- 選択と Ctrl+C コピー
- Ctrl+L 折り返し表示
- Ctrl+P 16 進数表示
- タブの追加・切り替え・終了
できないこと(「大容量ファイルは読み取り専用モードのため編集できません」)
- 入力、削除、貼り付け、切り取り、行削除
- 保存、名前を付けて保存
- 置換(Ctrl+R/F5/F6)
- 元に戻す・やり直す
- 文字コード・改行コードの変換(F7/F8)
- 整形、段落の再整形、矩形の埋め・移動
- 定型文の挿入、マクロの実行
- シンタックスハイライトはありません。ハイライトは全体の解析が必要なので、意図的に無効です。
- 左右比較もできません。F4 で選ぶと「ファイル全体の読み込みによるメモリー不足を避けるため、大容量ファイルの読み取り専用モードでは左右比較を利用できません」と断られます(3.4.9 参照)。
メモリーを節約する仕組み
道しるべだけを覚え、必要な行だけディスクから読みます。
伸び続けるログを追う
250 ミリ秒ごとに確認し、新しい内容が自然に現れます。
このモードがいちばん役に立つ場面です。検索もでき、遡ってもスクロールできる tail -f だと思ってください。
- 追記なら軽い処理です。「まだ書き終わっていない最終行」と新しい内容だけを作り直し、ファイル全体を走査し直しません。だから大きくても遅くなりません。
- カーソルが末尾にあれば追従します。最終行の行末にいると、新しい内容が来るたび画面が進みます。これが追従モードです。
- 離れれば止まります。遡って読んでいるあいだは、その位置に固定されます。追従に戻すには Ctrl+End を押してください。
- 更新時には「外部ファイルの更新を検出し、内容を再読み込みしました」と出ます。
erya /var/log/nginx/access.log → Ctrl+End で追従開始 → 調べたくなったら Ctrl+W と F3 → 終わったら Ctrl+End で追従へ復帰。エディターから出る必要はありません。
切り詰めとローテーション
「伸びる」のではなく「入れ替わる」場合の話です。
| ディスク上で起きたこと | Erya の対応 | よくある原因 |
|---|---|---|
| 末尾へ追記 | 新しい部分だけ足す。高速 | サービスがログを書き続けている |
| 中身が空になった(切り詰め) | 開き直してインデックスを作り直す | > access.log、logrotate の copytruncate |
| その場で書き換えられた | 開き直してインデックスを作り直す | 作り直された帳票など |
| ファイルが入れ替わった(ローテーション) | 開き直してインデックスを作り直す | logrotate が旧ファイルを退避 |
Erya が追うのはパスです。access.log が入れ替われば、見えているのは新しいほう(たいてい空か短い)で、古い内容は access.log.1 にあります。必要なら別タブで開いてください。
通常ファイルの外部変更
小さなファイルも見ています。違うのは反応の仕方だけです。
同じ 250 ミリ秒の確認は通常ファイルにも走ります。違いは、通常ファイルは編集できるため、あなたが編集したかどうかを見分ける必要がある点です(詳細は 2.1.7):
| 種類 | 未編集 | 編集済み |
|---|---|---|
| 通常のテキスト | 自動再読み込み。元に戻す履歴は消えます | 警告のみ。保存時に赤い確認行(O/R/N) |
| 大容量ファイル | 自動で再読み込み | 起こりません。編集できないモードです |
外部変更の 3 つの結末
遭遇したときに見る表です。
| メッセージ行 | 色 | すべきこと |
|---|---|---|
| 外部更新を検出し、ファイルを安全に再読み込みしました | 黄 | 何もしなくて構いません。内容は最新ですが、元に戻す履歴は消えています。 |
| 外部ファイルの更新を検出し、内容を再読み込みしました | 黄 | 大容量ファイルモードの自動更新です。何もしません。 |
| ファイルが外部で変更されました。保存前に確認が必要です | 黄 | 警告のみで、まだ止められていません。確認は保存時に出ます。 |
| 外部ファイルが更新されています:[O]上書き、[R]再読込、[N/Esc]取消 | 赤 | 判断が必要です。迷ったら N、次に F12 で控えを保存(2.1.7)。 |
| 外部ファイルの再読み込みに失敗しました:… | 黄 | 削除された、権限が変わった、ディスクの問題など。ファイルの存在を確認してください。 |
よくあるつまずき
大容量ファイルモードの疑問 6 つ。
| 症状 | 原因と対処 |
|---|---|
| 入力しても反応せず、読み取り専用と出る | 64 MiB 以上のためです(3.2.2)。編集するには外部で分割するか、必要な部分を取り出します。 |
| シンタックスハイライトが無い | このモードでは意図的に無効です(3.2.2)。 |
| 画面が勝手に末尾へ飛ぶ | カーソルが末尾にあり追従中です。遡れば止まります(3.2.4)。 |
| 画面が更新されなくなった | カーソルが末尾から離れています。Ctrl+End を(3.2.4)。 |
| ログが急に空になった | 切り詰めかローテーションで、新しいファイルを見ています(3.2.5)。 |
| 大きな日本語ファイルが 16 進数で開く | 非 UTF-8 の大きなファイルはストリームで復号できません(3.2.1)。先に UTF-8 へ変換を。 |