Linuxトラブルシューティング

HOME > Linuxトラブルシューティング

Linuxトラブルシューティング:記事リスト

Linuxトラブルシューティングのカテゴリーには以下の記事がリストされています。

Linuxのvm.swappinessを設定してスワップを制御する方法|メモリ実態の確認からサーバー種別ごとの推奨値まで

「サーバーが急に重くなった。free -m でスワップを大量に使っているのはわかるが、そもそもなぜこんなに使われるのか」
こうした疲問の答えが vm.swappiness というカーネルパラメータにあります。この値を適切に設定することで、RAM に余裕があるうちはスワップへの退避を最小限に抑えることができます。

この記事では、RHEL 8系~9系・Ubuntu 20.04 LTS以降を想定環境として、vm.swappiness の仕組みと値の選び方、/proc/meminfo でメモリの実態を把握する方法、そして再起動後も設定を維持するための永続化手順を解説します。

この記事のポイント

・vm.swappiness(0~100)でスワップの積極使用度を制御できる
・データベース・キャッシュサーバーには1か10が推奨される
・/proc/meminfoのMemAvailableが「使える空きメモリ」の正しい値
・sysctl -wで即時変更、/etc/sysctl.dに書けば永続化できる

続きを読む "Linuxのvm.swappinessを設定してスワップを制御する方法|メモリ実態の確認からサーバー種別ごとの推奨値まで"

Linuxでファイルを削除したのにディスクが空かない時の調査手順|lsofで開いたままのファイルを特定してtruncateで即座に解放する方法

「あれ、ディスクが満杯のままだ」——深夜アラートに飛び起きて問題のログファイルを rm で削除したのに、df -h で使用量を確認しても数字がまったく変わらない。このケースで途方に暮れたことのあるエンジニアは少なくないはずです。

Linuxでは rm でファイルを削除しても、そのファイルをプロセスが「開いたまま」の状態であれば、ディスクの実体(データブロック)は一切解放されません。これはLinuxのファイルシステムが持つ「inode参照カウント」という設計によるもので、動作ログを書き続けるWebサーバーやDBサーバーでは日常的に起きうる問題です。

この記事では、削除したのにディスクが空かない問題を lsof コマンドで特定し、プロセスを止めずに truncate と /proc/PID/fd で即座に解放する手順を解説します。RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・rmでディスクが空かないのは、プロセスがそのファイルをまだ開いているから(inode参照カウント)
・dfとduの差が大きい時は lsof | grep deleted で削除済み・開放待ちファイルを特定する
・プロセスを止めずに解放するには truncate -s 0 /proc/PID/fd/FD を使う
・logrotateのcopytruncateオプションはこの仕組みを応用した設計

続きを読む "Linuxでファイルを削除したのにディスクが空かない時の調査手順|lsofで開いたままのファイルを特定してtruncateで即座に解放する方法"

LinuxにカスタムCA証明書を追加する方法|update-ca-trustとupdate-ca-certificatesの実践手順

「curlで社内サーバーにアクセスすると、SSL certificate problem: unable to get local issuer certificate というエラーが出て接続できない」
Linuxのシステムトラストストアには、公的な認証局(Let's Encryptやグローバルサインなど)の証明書があらかじめ登録されていますが、社内CA・プロキシが発行した証明書・自己署名証明書は含まれていません。このため、そうした証明書を使ったサーバーへのHTTPS接続時にエラーが発生するのは正常な動作であり、解決するにはLinuxのトラストストアにCA証明書を追加する必要があります。

この記事では、RHEL 9 / Rocky Linux / AlmaLinux(update-ca-trustコマンド)とUbuntu 24.04 / Debian系(update-ca-certificatesコマンド)それぞれでカスタムCA証明書を追加する手順を解説します。証明書フォーマットの確認・変換、追加後のopenssl verify確認、JavaやPythonで別途設定が必要なケースまでカバーします。

動作確認環境:RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS

この記事のポイント

・RHEL系はupdate-ca-trust、Ubuntu系はupdate-ca-certificatesで追加する
・証明書はPEM形式(BEGIN CERTIFICATE行)が前提、DERは変換が必要
・追加後はopenssl verify / curlで必ず動作確認する
・JavaアプリはOSトラストストアとは独立したkeytoolの設定が別途必要

続きを読む "LinuxにカスタムCA証明書を追加する方法|update-ca-trustとupdate-ca-certificatesの実践手順"

Linuxのヒュージページ設定|THPを無効化してデータベースサーバーの性能劣化を防ぐ方法

「Redisを再起動するたびに WARNING you have Transparent Huge Pages (THP) support enabled というログが出る。」
「PostgreSQLのクエリが5秒に1度だけ急に遅くなる、周期的な性能劣化が起きている。」

この2つの現象、根っこは同じです。Linuxの「透過的ヒュージページ(Transparent Huge Pages・THP)」が、データベースサーバーのメモリ管理に干渉してパフォーマンスをこっそり削っています。

この記事では、THPとは何か・なぜ問題になるかを解説したうえで、RHEL 9 / Ubuntu 24.04 LTS環境でのTHP無効化手順と永続化、さらに明示的ヒュージページ(vm.nr_hugepages)を活用してPostgreSQL・Redisの性能を引き出す設定方法まで実機コマンドで解説します。

この記事のポイント

・THP有効時、Redis・DBの周期的遅延・レイテンシスパイクが発生する
・THPはsysfsでneverに設定し、systemdユニットで永続化する
・vm.nr_hugepagesでヒュージページ数を確保し/proc/meminfoで監視する
・PostgreSQLはhuge_pages=onで適用、RedisはTHP無効化のみで警告が消える

続きを読む "Linuxのヒュージページ設定|THPを無効化してデータベースサーバーの性能劣化を防ぐ方法"

chrootコマンドでLinuxシステムを救済・修復する方法|起動不能・パッケージ破損・GRUB修復の実践手順

「Linuxサーバーが起動しない。GRUB画面から先に進まない。」
「rootパスワードを忘れた。シングルユーザーモードにも入れない。」

サーバー管理の現場では、ある日突然こういう場面に直面します。
そのとき頼れるのが chrootコマンド を使ったシステム救済の手順です。

chroot(チェンジルート)は、「見かけ上のルートディレクトリを変える」コマンドです。
LiveDVDや救済モードで起動した最小環境から、故障したディスク上のLinuxシステムに「乗り移る」ことができます。
乗り移ってしまえば、passwd でrootパスワードをリセットしたり、dnf reinstall で壊れたパッケージを入れ直したり、grub2-install で起動ローダーを修復したりできます。

この記事では、Rocky Linux 9.4 / RHEL 9.4 の実機で確認した手順を解説します。
bind マウントの準備からchrootへの入り方、主要な修復タスク、exit後のアンマウント手順までステップで説明します。

この記事のポイント

・/proc・/sys・/dev のbindマウントを先に済ませないとchrootの中でコマンドが失敗する
・LVM構成では vgchange -ay でVGをアクティブにしてからマウントする手順が必須
・rootパスワードリセット・dnf reinstall・grub2-install はchrootの中から実行できる
・exitの後は bindマウントを逆順でumountしてからrebootすること

続きを読む "chrootコマンドでLinuxシステムを救済・修復する方法|起動不能・パッケージ破損・GRUB修復の実践手順"

LinuxのsystemdサービスをType別に設計する方法|simple・forking・notify・oneshotの使い分けとPIDFile設定

「systemctl startでActiveになったはずなのに、ps auxでプロセスが見当たらない」「Type=forkingにしたらfailedのまま起動しない」——こういったsystemdサービスの謎挙動は、ほぼ例外なくTypeディレクティブの設定ミスが原因です。

systemdがサービスの「起動完了」をどう判断するかは、Typeの指定によってまったく変わります。Type=simpleのままforkして常駐するプログラムを登録すると、systemdは親プロセスが終了した時点で「プロセスが落ちた」と判断します。逆にType=forkingにしてもPIDFileがなければ、systemdはどのプロセスがサービスの本体なのかを特定できません。

この記事では、Type=simple・forking・notify・oneshotそれぞれの動作原理を実機コマンドで確認しながら、どの場面でどのTypeを使うべきかを解説します。PIDFileの設定方法、Restart設定との組み合わせ、journalctlによるType起因エラーの特定まで一通り押さえます。

動作確認環境: RHEL 9.4 / AlmaLinux 9.4(systemd 252)で検証済みです。

この記事のポイント

・Type=simpleはフォアグラウンド常駐プロセスに使い、forkするデーモンには使わない
・Type=forkingでは必ずPIDFileを指定しないとsystemdがプロセスを見失う
・Type=notifyはsd_notify()対応プログラムで最も確実な起動確認ができる
・Type=oneshotはRemainAfterExit=yesと組み合わせて一回限り実行スクリプトに使う

続きを読む "LinuxのsystemdサービスをType別に設計する方法|simple・forking・notify・oneshotの使い分けとPIDFile設定"

dnf providesでコマンドが入っているパッケージを調べる方法|「command not found」をRHEL・Rocky Linuxで解決する手順

「netstatが使えない」「tracerouteが見つからない」——RHEL 9 や Rocky Linux 9 をセットアップした後、こんなエラーに直面したことはないでしょうか。

最小インストール(minimal install)ではかつて標準だったツールの多くが省かれています。「以前は使えていたのに突然なくなった」というケースも含め、どのパッケージをインストールすれば解決するかを調べる手順を体系的に解説します。

この記事では dnf provides と rpm -qf を中心に、「command not found」を素早く解決するトラブルシュート手順を RHEL 9.4 / Rocky Linux 9 の実機出力を交えて説明します。PATH の問題で「ファイルは存在するのに見つからない」パターンへの対処も含めて網羅します。

この記事のポイント

・dnf provides '*/コマンド名' で提供パッケージを特定できる
・rpm -qf でインストール済みファイルの属するパッケージを確認できる
・which / type コマンドで PATH 問題かパッケージ未導入かを切り分ける
・netstat・ifconfig は net-tools、iostat・sar は sysstat で解決できる

続きを読む "dnf providesでコマンドが入っているパッケージを調べる方法|「command not found」をRHEL・Rocky Linuxで解決する手順"

LinuxのTCPスタックをsysctlでチューニングする方法|somaxconn・バッファサイズ調整で高負荷時の接続詰まりを解消

「Webサーバーへのアクセスが急増したとき、接続エラーが増えてパフォーマンスが落ちた経験はないだろうか。」
CPUもメモリも余裕があるのに接続が詰まる場合、Linuxカーネルのデフォルトパラメータがボトルネックになっていることが多い。特に「接続受付キューの上限」「TIME_WAIT接続の滞留」「TCP送受信バッファの不足」はデフォルト値が小規模サーバー向けのままで、本番の高負荷環境に合っていないことがある。

この記事では、net.core.somaxconn・tcp_max_syn_backlog・tcp_fin_timeout・tcp_rmem/tcp_wmemの各パラメータについて、何をしているか・現状確認コマンド・推奨設定値・永続化の手順を実機ベースで解説する。
実行環境:RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS で動作確認済み。

この記事のポイント

・somaxconnのデフォルト128は高負荷サーバーには低すぎる。4096以上を推奨
・tcp_tw_reuseはNATやロードバランサー配下では有効だが設定前に動作確認が必要
・tcp_rmem/tcp_wmemを広げると帯域効率は上がるがメモリ使用量も増える
・変更は/etc/sysctl.d/に.confを置いて永続化し、sysctl -pで即時反映する

続きを読む "LinuxのTCPスタックをsysctlでチューニングする方法|somaxconn・バッファサイズ調整で高負荷時の接続詰まりを解消"

fioコマンドでLinuxサーバーのディスクI/Oをベンチマークする方法|ランダム読み書き・シーケンシャル・混在の実測手順

「サーバーのディスクが遅いかもしれないが、どうやって数値で確認すればいい?」
「iostatで%utilが高いのは分かったが、これはもう限界なのか、まだ余裕があるのか判断できない……」

そのディスクの「本来の最大性能」を知らないまま障害対応しても、判断の根拠が曖昧になります。ベンチマーク値がなければ「%util 80%が普通なのか危険水域なのか」を判定できないのです。

この記事では、Linuxサーバーのディスクパフォーマンスを定量評価するためのベンチマークツール「fio」の使い方を解説します。シーケンシャル・ランダム・混在負荷の計測手順から、bw・IOPS・clatの出力の読み方、iostatと組み合わせた高負荷時の診断まで、RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTSで動作確認した実機例でカバーします。

この記事のポイント

・fioで「ディスクの実力値」を事前計測しておくと障害時の判断基準になる
・シーケンシャルはbs=1M iodepth=1、ランダムはbs=4k iodepth=32が定番パラメータ
・--direct=1を忘れるとRAMを測定してしまい、実際のディスク性能が分からない
・bw(帯域)・IOPS・clat(完了レイテンシ)の3指標を読めれば実用上十分

続きを読む "fioコマンドでLinuxサーバーのディスクI/Oをベンチマークする方法|ランダム読み書き・シーケンシャル・混在の実測手順"

conntrackコマンドでLinuxのNAT接続追跡を診断する方法|nf_conntrack_maxが上限に達した時の調査と恒久対処

「外部への接続が突然つながらなくなった。でもネットワーク自体は死んでいないし、ポートも開いている。いったい何が起きているのか」
「サーバーの高負荷時や大量アクセス時だけ間欠的に通信が失敗する。原因の手がかりすらつかめない」

こういったトラブルの原因として見落とされがちなのが、Linuxカーネルの接続追跡テーブル(conntrackテーブル)の枯渇です。NATを使う環境では、カーネルがすべての通信セッションを内部テーブルに記録しています。このテーブルが上限に達すると、新しい接続が静かにドロップされ、アプリケーション側にはタイムアウトとして現れます。

この記事では、conntrackコマンドを使ってLinuxのNAT接続追跡テーブルを調べる方法を解説します。インストールから基本操作、nf_conntrack_maxが上限に達した際の症状確認、dmesgでのドロップ検知、sysctl永続化、タイムアウト調整まで、RHEL 9.4 / Ubuntu 24.04 LTSで動作確認した実践手順をお伝えします。

この記事のポイント

・nf_conntrack_max枯渇は "table full, dropping packet" というdmesgログで検知できる
・現在の使用数は /proc/sys/net/netfilter/nf_conntrack_count で確認できる
・nf_conntrack_maxはRAM(GB)×65536を目安にsysctlで増やして永続化する
・TCP ESTABLISHED のタイムアウトを短縮するとエントリを大幅に削減できる

続きを読む "conntrackコマンドでLinuxのNAT接続追跡を診断する方法|nf_conntrack_maxが上限に達した時の調査と恒久対処"

LinuxでTCP TIME_WAIT・CLOSE_WAITが大量発生した時の調査と対処手順|ssとsysctlで接続状態を把握する

「Webサーバーの接続数は増えていないのに、突然 "Cannot assign requested address" エラーが頻発し始めた。」
「ss コマンドを実行したら TIME_WAIT が 3,000 件を超えていた。これはまずいのか?」

こういったケースのほとんどは、TCP 接続状態の蓄積が原因だ。TIME_WAIT や CLOSE_WAIT は TCP の仕様上、必ず発生する状態だが、設定や実装の問題によって際限なく蓄積する。蓄積が進むとローカルポートが枯渇し、サービス全体への新規接続が失敗する。

この記事では、RHEL 9.4 / Ubuntu 24.04 LTS の実機コマンドを使いながら、TIME_WAIT・CLOSE_WAIT の確認方法・原因の見極め・sysctl とWebサーバー設定による実践的な対処手順を解説する。

この記事のポイント

・TIME_WAIT は正常なTCP終了で発生し、ss -ant | awk '{print $1}' | sort | uniq -c で状態別に集計できる
・TIME_WAIT 大量発生は tcp_tw_reuse 有効化と ip_local_port_range 拡張で緩和できる
・CLOSE_WAIT はアプリ側の close() 漏れが原因で sysctl では根本解決にならない
・Webサーバーの keepalive_timeout を設定し、短命接続の繰り返し自体を減らすのが最も効果的

続きを読む "LinuxでTCP TIME_WAIT・CLOSE_WAITが大量発生した時の調査と対処手順|ssとsysctlで接続状態を把握する"

LinuxでZIPファイルを展開したら日本語ファイル名が文字化けした時の対処法|unzip・unar・convmvの使い分け

「Windowsで圧縮して送ってもらったZIPを展開したら、ファイル名がすべて文字化けして読めなくなった」
このトラブルは、Linux(UTF-8環境)とWindows(Shift_JIS環境)のファイル名文字コードの違いから発生する。受け取ったZIPを開くたびに文字化けするのは、運用上なかなか地味なストレスになる。

この記事では、文字化けの原因を理解したうえで、unzip・unar・convmv を使った具体的な対処手順を解説する。RHEL 9.4 / Rocky Linux 9 / Ubuntu 24.04 LTS で動作確認済みだ。

この記事のポイント

・WindowsのZIPはShift_JIS(CP932)でファイル名を保存するため、Linux展開時に文字化けする
・RHEL系では unzip -O CP932 でエンコーディングを指定して展開できる
・Ubuntu系は標準 unzip が -O を非サポート。unar コマンドで自動判定展開が最も手軽
・展開済みで文字化けしてしまった場合は convmv でファイル名を後から変換できる

なぜLinuxでWindowsのZIPを展開すると文字化けするのか

ZIPフォーマットの仕様(PKWARE)では、ファイル名のエンコーディングは本来オプション扱いだった。古いWindowsの圧縮ツールはファイル名をShift_JIS(CP932)で保存していた。一方、Linux の unzip はデフォルトでシステムのロケール(通常UTF-8)を前提として展開する。

CP932のバイト列をUTF-8として解釈するため、ファイル名が読めない文字の羅列になる。具体的にはこのような状態になる。

# CP932(Shift_JIS)で作成されたZIPをデフォルト設定で展開した場合 $ unzip windows_data.zip Archive: windows_data.zip inflating: ???_20240901.csv inflating: ???_??.xlsx

なお、7-ZipやWinRAR最新版はZIPのUTF-8フラグ(General Purpose Bit Flag の bit 11)を立て、ファイル名をUTF-8で保存するため、これらで作ったZIPは文字化けしないことが多い。古いWindowsツールや一部のメールソフト添付機能が作成したZIPで発生するケースが多い。

続きを読む "LinuxでZIPファイルを展開したら日本語ファイル名が文字化けした時の対処法|unzip・unar・convmvの使い分け"

LinuxでSSH接続が遅い時の調査手順|UseDNS・GSSAPIAuthenticationを切り分けてControlMasterで高速化する方法

「SSHでサーバーに接続するのに10秒以上かかる」
こういう症状はLinux管理者なら一度は経験するはずだ。接続自体は確立されるので後回しにしがちだが、放置するとバッチスクリプトや定期実行処理で致命的なタイムロスになることもある。

SSH接続の遅延には典型的な原因が3つある。逆引きDNS解決(UseDNS)・Kerberos認証待ち(GSSAPIAuthentication)・ネットワーク経路の遅延だ。この記事では ssh -v の出力を読んで遅延箇所を特定する方法から、/etc/ssh/sshd_config の修正、ControlMaster によるセッション多重化まで、RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTSで動作確認した手順を解説する。

この記事のポイント

・SSH接続遅延の原因はUseDNS・GSSAPIAuthentication・ネットワーク経路の3パターン
・ssh -vの出力からどのフェーズで止まっているかを正確に特定できる
・UseDNS no / GSSAPIAuthentication noの2行で大多数の遅延が解消する
・繰り返し接続が多い運用ではControlMasterのセッション多重化が効果大

続きを読む "LinuxでSSH接続が遅い時の調査手順|UseDNS・GSSAPIAuthenticationを切り分けてControlMasterで高速化する方法"

cgroupv2でsystemdサービスのCPU・メモリを制限する方法|プロセス暴走をシステムレベルで防ぐ実践手順

「特定のサービスがCPUを食いつぶして、他のサービスまで巻き添えで遅くなった」「メモリを大量消費するプロセスを放置したら、夜中にOOMKillerが走ってサービスが落ちた」 — こうした経験は、Linuxサーバー管理の現場で誰もが一度は直面する問題です。

ulimitによる制限はシェルセッション単位でしか機能しませんが、Linux標準の仕組みである cgroup(Control Group) を使えば、OSレベルでサービスごとにCPU・メモリ・I/Oの使用量に上限を設けることができます。RHEL 9 / Rocky Linux 9 / Ubuntu 22.04以降では cgroupv2(cgroup v2)が標準となり、systemdと深く統合されているため、Unitファイルに数行追加するだけで設定できます。

この記事では、systemd Unitファイルを使ったcgroupv2リソース制限の設定方法を、RHEL 9.4の実機出力を交えて解説します。動作確認環境はRHEL 9.4 / Rocky Linux 9.4 / Ubuntu 22.04 LTSです。対象はサービス単位でリソースを管理したいすべてのLinuxサーバー管理者です。

この記事のポイント

・cgroupv2はsystemdと統合済み — UnitファイルでCPU・メモリを制限できる
・CPUQuota=50% でCPU使用率を1コアの50%に上限設定できる
・MemoryMaxを超えたプロセスはOOMKillerによって強制終了される
・systemctl showとsystemd-cgtopで設定値と実使用量を確認できる

続きを読む "cgroupv2でsystemdサービスのCPU・メモリを制限する方法|プロセス暴走をシステムレベルで防ぐ実践手順"

LinuxでToo many open filesエラーが出た時の対処法|ファイルディスクリプタ枯渇の調査からulimit・sysctl設定まで

「サーバーが落ちた。ログに『Too many open files』が大量に出ている。」
そんな連絡を深夜に受けた経験がある人は少なくないだろう。プロセスを再起動すれば一時的に回復するが、数時間後にはまた同じ状態になる——この繰り返しが現場を消耗させる。

「ファイルが多すぎる=ディスクが溢れた」と思い込んで df コマンドを打ち、問題がないとわかると今度は古いログファイルを削除し始める——私自身、SE時代に同じ間違いを犯して2時間以上無駄にした。原因はファイルディスクリプタ(FD)の枯渇だ。「上限を上げれば解決」と思われがちだが、FDリークが原因の場合は上限を上げても焼け石に水になる。まず現状を正確に把握してから手を打つのが正解だ。

この記事では、FD枯渇の仕組みから調査コマンド、上限値の恒久設定、FDリークの特定まで、一連の対処手順を実機の出力例とあわせて解説する。RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済み。

この記事のポイント

・/proc/sys/fs/file-nr でシステム全体のFD使用数を即座に把握できる
・lsof でFDを大量消費しているプロセスをPID別に特定できる
・limits.confとLimitNOFILEの2箇所を設定しないと恒久化されない
・上限を「unlimited」に設定するのは危険——必ず具体的な数値を入れる
・FDが時間とともに増え続ける場合はアプリのFDリークを疑う

続きを読む "LinuxでToo many open filesエラーが出た時の対処法|ファイルディスクリプタ枯渇の調査からulimit・sysctl設定まで"

perfコマンドでLinuxのCPUホットスポットを特定する方法|perf record・perf reportでボトルネックを調査する実践手順

「CPU使用率が80%を超えているのに、どのプロセスのどの処理が重いのか特定できない」

top コマンドはプロセス単位で CPU 使用率を見せてくれるが、「そのプロセスの内部でどの関数が CPU 時間を消費しているか」までは教えてくれない。mpstat や sar で詳細な統計を取っても、負荷の「出どころ」を関数レベルで掴む手段にはならない。

そこで使うのが perf(Linux Performance Events)だ。Linux カーネルに組み込まれたパフォーマンス計測フレームワークで、CPU のハードウェアカウンター(PMU)を使ったサンプリングにより「どの関数が何%の CPU 時間を占めているか」を可視化できる。この記事では perf stat・perf record・perf report・perf top の実践的な使い方を、実機出力とトラブルシューティングを交えながら解説する。

動作確認環境: RHEL 9.4 / Ubuntu 24.04 LTS(kernel 6.8 系)

この記事のポイント

・perf record でサンプリングし perf report で関数レベルのホットスポットを特定できる
・perf stat でキャッシュミス・分岐予測ミスなど CPU イベントを数値で計測できる
・Permission denied は /proc/sys/kernel/perf_event_paranoid を 1 に緩めると解消する
・カーネルシンボルが [unknown] になる場合は debuginfo パッケージの導入が必要

続きを読む "perfコマンドでLinuxのCPUホットスポットを特定する方法|perf record・perf reportでボトルネックを調査する実践手順"

mpstatコマンドでLinuxのCPUコア別使用率を確認する方法|高負荷コアの特定とsysstatインストールも

「サーバーのCPU使用率が急に上がった。topコマンドで確認してもどのコアに問題があるのか分からない」
「シングルスレッドのアプリが1コアを使い切っているはずなのに、CPU全体の平均で見ると大したことないように見える」

Linuxのマルチコアサーバーでは、CPU全体の平均使用率だけを見ていると問題を見落とすことがあります。topコマンドが表示する「%CPU合計」は全コアの平均値であるため、特定のコアだけに負荷が集中するケースでは原因を特定できません。

この記事では、コア別CPU使用率をリアルタイムで確認できるmpstatコマンドの実践的な使い方を解説します。sysstatのインストールから出力項目の読み方、高負荷コアを特定するトラブルシュート手順まで、実機出力例とともに説明します。RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・mpstat -P ALL 1 でコア別CPU使用率を1秒ごとに確認できる
・sysstatパッケージをインストールするだけで即使える(RHEL/Ubuntu両対応)
・%iowait高 → I/O待ち、%irq・%soft高 → ネットワーク割り込み集中が疑われる
・sar・iostatと同パッケージで、コア別の過去データ分析も可能

続きを読む "mpstatコマンドでLinuxのCPUコア別使用率を確認する方法|高負荷コアの特定とsysstatインストールも"

pmapコマンドでLinuxプロセスのメモリマップを確認する方法|メモリリーク調査とOOM対策の実践手順

「メモリ使用量が増え続けているのに、どのプロセスが原因か特定できない」「OOMキラーが頻発しているが、何がメモリを食っているのか分からない」——サーバー管理でこうした場面に遭遇したことはないでしょうか?

freeやtopでシステム全体・プロセス合計のメモリは見えますが、「そのプロセスのどの領域(コード・ヒープ・共有ライブラリ・スタック)がどれだけ使っているか」は分かりません。pmapコマンドを使うと、プロセスの仮想メモリマップを領域別に確認でき、メモリリークの兆候の早期発見やOOMキラー発動前の肥大化プロセスの特定に役立てることができます。

この記事では、pmapコマンドの基本から、メモリリーク調査・OOM対策への実践的な活用パターンまでを解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・pmap PID でプロセスの仮想メモリを領域ごとに確認できる
・-x オプションで各マッピングのKbytes・RSS・Dirtyを表示できる
・タイミングをずらして2回実行し差分を見るとメモリリークの兆候を掴める
・RSS合計がOOMキラー発動判断の指標になり、事前の予防的監視に使える

続きを読む "pmapコマンドでLinuxプロセスのメモリマップを確認する方法|メモリリーク調査とOOM対策の実践手順"

LinuxのOOM Killerでプロセスが強制終了する原因と対処法|dmesgで確認してoom_score_adjで優先度を設定する方法

「Webサーバーが正常に動いているはずなのに、突然Apacheプロセスが消えた」「cronジョブが途中で終わるのにエラーログに何も記録されない」

こういったケースで真っ先に疑うべきなのが、LinuxカーネルのOOM Killer(アウト・オブ・メモリ・キラー)だ。メモリが枯渇したとき、カーネルがシステム全体のクラッシュを防ぐために特定のプロセスを強制終了する仕組みで、実行時に通常のエラーを返さないため、カーネルログを調べなければ原因に気づかないことが多い。

この記事では、OOM Killerが発動したかどうかをログで確認する方法から、oom_score_adjを使って重要プロセスをKill対象から除外する恒久設定まで、RHEL 9.4 / Rocky Linux 9の実機出力をもとに解説する。Ubuntu 24.04 LTSでも同じ手順で動作確認済みだ。

この記事のポイント

・OOM Killerの発動は dmesg | grep -i "out of memory" で即確認できる
・Kill対象はoom_scoreが高いプロセス(/proc/PID/oom_scoreで確認)
・oom_score_adjを-1000にするとそのプロセスはKill対象から外れる
・systemdサービスはOOMScoreAdjust=-1000とMemoryMaxを組み合わせて永続保護する

続きを読む "LinuxのOOM Killerでプロセスが強制終了する原因と対処法|dmesgで確認してoom_score_adjで優先度を設定する方法"

カーネルパニックの調査とkdump設定|vmcore採取からcrashコマンドによる初動解析まで

「サーバーがカーネルパニックで落ちた。原因を特定しようにも手がかりが残っていない」
カーネルパニックが発生した瞬間、サーバーは沈黙する。SSH接続は途切れ、コンソールには大量のスタックトレースが流れ、再起動後には何が起きたかを追う手がかりが消えてしまう。
「せめてクラッシュ直前のカーネル状態を記録できていたら」。この痛みを知っているエンジニアは少なくないはずだ。

この記事では、カーネルパニックが発生した直後に kdump でvmcoreを採取し、crashコマンドで初動解析するまでの一連の流れを解説する。対象環境はRHEL 9.x / Rocky Linux 9(RHEL 8系でも基本手順は同様)。kexecカーネルの仕組みから設定・テスト・解析まで、重障害調査の全プロセスを体系的に押さえる。

この記事のポイント

・kdumpはkexecで第2カーネルを起動しvmcoreを保存するLinux標準機能
・crashkernel=パラメータとkexec-toolsのインストールで有効化できる
・crashコマンドのbt/log/sysでパニック原因とスタックを特定できる
・本番投入前にsysrq+cでテストクラッシュし動作確認を済ませること

続きを読む "カーネルパニックの調査とkdump設定|vmcore採取からcrashコマンドによる初動解析まで"

Linuxでコアダンプを取得・解析する方法|systemd-coredumpとcoredumpctlでプロセス異常終了を調査する

「プロセスが突然死んだが、なぜ死んだのかログだけでは追えない」
「Segmentation faultが出た。どのコードが問題なのか特定できない」

本番サーバーでプロセスが異常終了したとき、ログだけでは原因を突き止めるのが難しい場面があります。そういうときに頼りになるのがコアダンプです。

この記事では、systemd-coredumpの仕組みとcoredumpctlコマンドを使ったコアダンプの取得・解析方法を解説します。gdbとの連携まで把握しておけば、プロセス異常終了の調査が格段に速くなります。

動作確認環境:RHEL 9.4 / Rocky Linux 9.4 / Ubuntu 24.04 LTS

この記事のポイント

・coredumpctl listでコアダンプの一覧と詳細を確認できる
・coredumpctl gdb [PID]でgdbを直接起動しクラッシュを解析できる
・/etc/systemd/coredump.confでコアダンプの保存先とサイズを制御する
・btコマンドとprintでスタックトレースとNULLポインタを特定できる

続きを読む "Linuxでコアダンプを取得・解析する方法|systemd-coredumpとcoredumpctlでプロセス異常終了を調査する"

ハングしたLinuxサーバーをMagic SysRqキーで安全に再起動する方法・REISUBの手順とsysctl設定

「サーバーがまったく応答しない。SSHも繋がらない。コンソールに何を打っても反応しない。もう強制電源断しかないのか——」

本番環境のLinuxサーバーがハングアップしたとき、最初に頭をよぎるのが「データが壊れないか」という不安だ。fsyncが完了していない書き込みが残っていれば、電源を引き抜くのは極力避けたい。

この記事では、そういった状況でカーネルが提供する緊急手段——Magic SysRqキーとREISUBシーケンスを解説します。事前のsysctl設定から物理コンソールでの操作手順、/proc/sysrq-triggerを使ったリモート操作、よくある失敗パターンまで体系的にカバーします。動作確認環境はRHEL 9.4 / Rocky Linux 9.4です。

この記事のポイント

・Magic SysRqはカーネルレベルの緊急操作機構で、/proc/sys/kernel/sysrqで有効化する
・REISUBシーケンス(R-E-I-S-U-B)はファイルシステムを守りながら安全に再起動できる
・sysctl -w kernel.sysrq=1 で即座に有効化、/etc/sysctl.d/で永続化する
・SSHが繋がる場合は /proc/sysrq-trigger へのechoコマンドでリモート操作が可能

続きを読む "ハングしたLinuxサーバーをMagic SysRqキーで安全に再起動する方法・REISUBの手順とsysctl設定"

sosreportでLinuxサーバーの障害情報を採取する方法|RHEL系サポート調査に使う情報収集の型

「ベンダーサポートに問い合わせようとしたら、"sosreportを送ってください"と言われた。どうやって採取すればいい?」
障害発生時にこの問いが頭をよぎるエンジニアは多い。サービスが止まっている状況で、何をどう集めて渡すかを焦りながら考えるのは消耗する。

RHEL系Linuxを扱う現場では、障害情報の採取にsosreportが標準的に使われている。このコマンド1本で、OS設定・ログ・ハードウェア情報・カーネルパラメータをまとめてパッケージングできる。Red Hatのサポートエンジニアが問い合わせの第一声で「sosreportを送ってください」と言う理由がそこにある。

この記事では、sosreportの基本的な使い方から、プラグイン指定による採取範囲の絞り込み、Red Hatサポートへの提出手順まで、障害対応の「型」として体系的に解説します。RHEL 8/9・Rocky Linux 8/9での動作を確認済みです。

この記事のポイント

・sosreport(sos report)はRHEL系で障害情報を一括採取する標準ツール
・採取ファイルは /var/tmp/ 配下に .tar.xz で保存され、そのままサポートへ送付できる
・プラグイン指定で採取範囲を絞れば、短時間・軽量での採取が可能
・Red Hat社員番号(caseNumber)を指定すると、ファイル名にケース番号が入り管理しやすくなる

続きを読む "sosreportでLinuxサーバーの障害情報を採取する方法|RHEL系サポート調査に使う情報収集の型"

空き容量があるのにNo space left on deviceになる原因と対処|inode枯渇の調査手順

「ディスクの空き容量はまだあるはずなのに、ファイルが作れない」
「No space left on deviceというエラーが出るのに、df -hで確認すると使用率は70%台……」

この現象の原因はほぼ確実にinode(アイノード)の枯渇です。Linuxのファイルシステムにはブロック(データを格納する物理的な領域)とは別に、ファイルのメタデータを管理する「inode」という資源があります。df -hはブロックの使用率しか見ていないため、inode側が枯渇してもスルーしてしまいます。

この記事では、no space left on device inode問題の切り分けから、原因ディレクトリの特定、ファイル削除による復旧、再発防止までを実際のコマンド出力例とともに解説します。RHEL 9 / Rocky Linux 9 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・df -i でinode使用率(IUse%)が100%かどうかが最初の確認ポイント
・inodeはフォーマット時に数が固定されるため、ブロック容量とは独立して枯渇する
・find /var -xdev -printf '%h\n' | sort | uniq -c | sort -rn | head -20 で大量ファイルの場所を特定できる
・PHPセッションファイル・メールキュー・/tmpの蓄積がinode枯渇の三大原因
・削除してもエラーが解消しない場合は幽霊ファイル・予約領域・tmpfsも確認する

続きを読む "空き容量があるのにNo space left on deviceになる原因と対処|inode枯渇の調査手順"

Linuxで誤って削除したファイルを復元する方法|testdisk・extundeleteの使い方と復旧率を上げる初動対応

「rm -f important.conf」を実行した0.1秒後に気づいた——消すはずじゃないファイルを削除してしまった。

こういう経験、Linuxサーバーを触っている人なら一度は冷や汗をかいたことがあるはずです。Windowsのごみ箱と違い、Linuxのrmコマンドは「元に戻す」という仕組みを持っていない。実行した瞬間、ファイルは見えなくなります。

しかし「見えなくなった」と「データが消えた」は別の話です。正確には、ファイルシステムの管理情報(ディレクトリエントリとinode)が無効化されただけで、ディスク上のデータブロック自体は別のデータで上書きされるまで残っている可能性があります。

この記事では、Linuxで誤って削除したファイルを復元する方法を解説します。初動対応のポイント、testdisk・photorec コマンドによる実践的な復元手順、lsof を使った即時復元まで、RHEL 9.4 / Rocky Linux 9 / Ubuntu 24.04 LTS で動作確認した内容を紹介します。

この記事のポイント

・削除直後はディスクへの書き込みを止めることが最優先——追記するほど復元率は下がる
・testdisk/photorec コマンドで ext4・XFS から削除ファイルを復元できる
・プロセスが開いていれば lsof + /proc/[pid]/fd で即時・確実に復元できる
・extundelete は長期メンテ停止のため実務では testdisk/photorec が主流

続きを読む "Linuxで誤って削除したファイルを復元する方法|testdisk・extundeleteの使い方と復旧率を上げる初動対応"

Linuxにログインできない時の調査手順|faillockによるアカウントロックの確認・解除とPAM設定の見方

「パスワードは合っているはずなのに、なぜかLinuxにログインできない」
こんな状況に直面したとき、真っ先に疑うべき原因の一つが PAMのfaillock(フェイルロック)によるアカウントロックです。RHEL 8以降のディストリビューションでは、一定回数のパスワード失敗でアカウントが自動的にロックされる仕組みが標準で有効になっています。

この記事では、linux ログインできない faillockというトラブルに対して、アカウントロックの状態確認・解除・PAM設定の読み方まで、障害対応フローとして体系的に解説します。RHEL 9.4 / Rocky Linux 9.4で動作確認済みです。

この記事のポイント

・faillock コマンドでアカウントロック状態を即確認できる
・faillock --reset --user ユーザー名 でロックを即時解除できる
・ロック条件は /etc/security/faillock.conf で一元管理されている
・SSH鍵認証や sudo が使える場合は別経路で緊急対処できる

続きを読む "Linuxにログインできない時の調査手順|faillockによるアカウントロックの確認・解除とPAM設定の見方"

SSHで接続できない時の切り分け手順|ssh -vvvとsshd -Tでクライアント・サーバー両面から原因を特定する

「sshで接続できない」「connection refusedとしか出ない」
夜間にサーバーが応答しなくなって、焦りながら原因を探した経験はないでしょうか。

SSH接続が失敗する原因は複数あります。ファイアウォール、sshdの停止、鍵のパーミッション、sshd_configのAllowUsers制限など、原因は様々ですが、どれも同じ「接続できない」というエラーで現れます。手当たり次第に設定を触るのは逆効果です。

この記事では、クライアント側の詳細ログを取得する ssh -vvv と、サーバー側の有効設定を出力する sshd -T を組み合わせた、体系的な切り分け手順を解説します。
動作確認環境: RHEL 9.4 / Ubuntu 24.04 LTS

この記事のポイント

・ssh -vvvで接続試行の詳細ログを確認できる
・sshd -Tでサーバーの有効な設定値を即確認できる
・「connection refused」はポートとsshdの起動状態を最初に確認
・鍵認証失敗は~/.ssh/authorized_keysのパーミッションが原因なことが多い

続きを読む "SSHで接続できない時の切り分け手順|ssh -vvvとsshd -Tでクライアント・サーバー両面から原因を特定する"

killできないプロセスとゾンビプロセスの調査・対処|Dステート・defunctの見分け方と安全な解消手順

「kill -9 を打ったのにプロセスが消えない」「ps aux で Z や D が表示されたまま何も変わらない」。夜間の障害対応でこういう場面に遭遇すると、焦りながら何度も kill を打ち直してしまいます。

しかし、ゾンビプロセス(defunct)とDステートプロセスに kill コマンドを何度打っても解消しません。どちらもカーネルの仕組み上、シグナルを受け取れる状態にないからです。

この記事では、「ゾンビプロセス kill できない」「Dステート kill できない」という状況の根本原因から、ps・/proc ファイルシステムを使った調査手順と状態ごとの安全な解消方法まで、RHEL 9.4 / Rocky Linux 9 の実際のサーバー出力例を交えて解説します。闇雲に kill を繰り返すのではなく、状態を正確に診断して的確な対処が取れるようになることがゴールです。

この記事のポイント

・ゾンビ(defunct/Z)は「終了済みの残骸」でシグナルを受け取れない
・Dステートは「カーネルI/O待ちで割り込み不可」のため kill が効かない
・ゾンビ解消には kill ではなく「親プロセスへの SIGCHLD か親の終了」が正解
・DステートはNFS・ストレージのI/O根本原因を取り除かないと解消しない

続きを読む "killできないプロセスとゾンビプロセスの調査・対処|Dステート・defunctの見分け方と安全な解消手順"

Linuxが起動しない時の復旧手順|GRUBレスキューモード・emergency modeとfstab誤設定の直し方

「急いで本番サーバーを再起動したら、OS が二度と上がってこなかった」

Linuxが起動しなくなる瞬間は突然やってきます。カーネルアップデートの直後、/etc/fstab の誤記、ストレージ障害、あるいは原因不明の停電——いずれも復旧を急ぐ状況で、画面に表示されるメッセージだけを頼りに対処しなければなりません。

この記事では、Linux起動障害のうち特に遭遇頻度の高い「grub rescue> プロンプト」「emergency mode / rescue target」「fstab誤設定」の3パターンに絞り、原因の切り分けから実際の復旧コマンドまでを体系的に解説します。Linuxの起動シーケンスの理論(BIOS から systemd まで)は別記事で解説しており、本記事はトラブル発生時の実践的な操作手順に特化しています。

動作確認環境:RHEL 9.4 / Rocky Linux 9 / Ubuntu 24.04 LTS

この記事のポイント

・grub rescue> が出たら ls でパーティション確認 → insmod normal で起動できる
・emergency modeはjournalctl -xbでエラーを特定してから対処する
・fstab誤設定はblkidでUUID確認 → findmnt --verifyで書式検証が基本
・再発防止にはnofailオプションとGRUB設定ファイルのバックアップが有効

続きを読む "Linuxが起動しない時の復旧手順|GRUBレスキューモード・emergency modeとfstab誤設定の直し方"

LinuxのRead-only file systemエラーを復旧する方法|原因の切り分けとfsckによるファイルシステム修復手順

「ファイルを保存しようとしたら Read-only file system と表示されて書き込めなくなった」「サービスがログを書き込めずに停止した」——こうした障害は、Linuxサーバーを運用していれば必ず経験します。
read-only file system エラーは、原因によって対処方法がまったく変わります。軽微なジャーナル不整合なら remount で即時復旧できますが、ファイルシステム破損が疑われる場合は fsck による本格修復が必要です。

この記事では、Read-only file system エラーの原因を切り分ける手順と、fsck(file system check)を使ったファイルシステム修復手順をステップごとに解説します。
RHEL 9.4 / Ubuntu 24.04 LTS・ext4/XFS ファイルシステムで動作確認済みの手順です。

この記事のポイント

・read-only file systemの原因はまずdmesgとjournalctlで確認する
・軽微な不整合はmount -o remount,rwで即時復旧できる
・fsckはアンマウント後またはシングルユーザーモードで実行する
・XFSはxfs_repair、ext4はe2fsckで修復する

続きを読む "LinuxのRead-only file systemエラーを復旧する方法|原因の切り分けとfsckによるファイルシステム修復手順"

systemdサービスが起動しない・failedになる時の調査手順|依存関係とユニット設定の直し方

「systemctl start を実行したのに、すぐに stopped になってしまう」「status コマンドで確認したら failed と表示されているが、どこを直せばいいのか分からない」
サーバー管理の現場で、こうした状況は珍しくない。特に自作のユニットファイルを書いた直後や、OS を RHEL 8 系から RHEL 9 系へ移行した際によく発生する。

systemd サービスの起動失敗は、正しい手順でログを追えば、ほとんどのケースで原因を特定できる。闇雲に設定を変更するのではなく、「なぜ failed になっているのか」を確認する順序が重要だ。
本記事では、systemd サービスが起動しない・failed になる時の調査手順を、journalctl のログ確認・依存関係のチェック・ユニットファイルの設定修正まで、現場で即使える手順で解説する。

動作確認環境:RHEL 9.4 / Ubuntu 24.04 LTS で確認済み。

この記事のポイント

・systemctl status → journalctl -xe の順で調査すれば原因の9割が特定できる
・failed の多くは ExecStart のパス誤り・実行権限・依存サービスの未起動が原因
・ユニットファイルを編集したら必ず daemon-reload を実行してから再起動する
・依存関係エラーは After/Requires の見直しか、依存先サービスの修正で解消できる

続きを読む "systemdサービスが起動しない・failedになる時の調査手順|依存関係とユニット設定の直し方"

Linuxサーバーが急に重くなった時の原因切り分け手順|CPU・メモリ・ディスクI・Oを順に調べる

「サーバーが急に重くなった。なにが原因なんだ……」
深夜の障害対応でこの状況に陥ると、焦りで頭が真っ白になる人は少なくありません。

この記事では、Linuxサーバーの高負荷が発生した際に CPU・メモリ・ディスクI/O を順番に切り分ける手順 を、コマンドの実行例と出力の読み方とともに解説します。
RHEL 9.4 / Ubuntu 24.04 LTS で動作確認済みです。

この記事のポイント

・まず top/uptime でロードアベレージの傾向を掴む
・CPU 高負荷なら top の %us/%sy/%wa の内訳で方向を絞る
・メモリ不足は free -h の available 欄とスワップ使用量で判断する
・ディスク待ちは iostat -x で %iowait と %util を確認する

続きを読む "Linuxサーバーが急に重くなった時の原因切り分け手順|CPU・メモリ・ディスクI・Oを順に調べる"

Linuxでcronが実行されない時の調査手順|ログ・環境変数・権限の3点を切り分ける

「手動で実行すると動くのに、crontabに登録すると動かない」

cronのトラブルは、原因が3つのパターンにほぼ絞られます。ログの確認、環境変数の設定、実行権限の確認です。この3点を順番に切り分ければ、大半の問題は30分以内に解決できます。

この記事では、cronが実行されない時の原因切り分け手順を、実際のログ出力例を交えながら解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・cronのログを journalctl -u crond で即座に確認する
・「手動でOK・cronでNG」はほぼ PATH 未設定が原因
・実行権限(chmod +x)と行末の改行コードも必ず確認
・/var/log/cron が空なら crond 自体が停止していないか確認する

続きを読む "Linuxでcronが実行されない時の調査手順|ログ・環境変数・権限の3点を切り分ける"

Linuxでディスクが容量不足になった時の対処手順|原因ファイルの特定から安全な削除まで

「df -hコマンドを実行したら Use% が 100% になっていた」「ディスクが満杯でサービスが止まった」——こんな経験、Linuxサーバーを運用していれば必ず一度は遭遇します。
容量不足はパニックになりがちですが、手順を知っていれば冷静に対処できます。

この記事では、Linuxでディスク容量が不足した時の対処フロー(原因ファイルの特定から安全な削除まで)を体系的に解説します。
dfコマンドで状況を確認してから、duコマンドで原因を特定し、安全にディスクを空ける具体的な手順まで、ステップごとに説明します。

この記事のポイント

・dfコマンドで「どのパーティションが満杯か」を最初に把握する
・duコマンドで「容量を食っているディレクトリ」を絞り込む
・ログ・コアダンプ・古いバックアップが原因の大多数を占める
・削除前に必ずファイルの用途を確認してから実施する

続きを読む "Linuxでディスクが容量不足になった時の対処手順|原因ファイルの特定から安全な削除まで"

rsyslog.confの設定ガイド|ログ転送・フィルタリング・テンプレートの実践例

「サーバーのログをもっと細かく制御したいのに、rsyslog.confの書き方がよくわからない。」
「ログを別サーバーに転送する設定をしたいが、どこに何を書けばいいのか。」

Linuxのログ管理を担うrsyslogは、設定ファイル rsyslog.conf の書き方を知っているかどうかで、運用効率が大きく変わります。
この記事では、rsyslog.conf の基本構造から、ログ転送・フィルタリング・テンプレートの実践的な設定例まで体系的に解説します。RHEL 9 / AlmaLinux 9 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・ rsyslog.conf はファシリティ.プライオリティ+アクションの組み合わせで書く
・ @@サーバーIPでTCP転送、@サーバーIPでUDP転送を切り替えられる
・ filterとtemplateでログの整形・選別・個別ファイル保存が可能
・ トラブル時は rsyslogd -N1 で設定ファイルの構文エラーを検出できる

続きを読む "rsyslog.confの設定ガイド|ログ転送・フィルタリング・テンプレートの実践例"

AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ

「journalctlのエラーをそのままAIに貼ったら的外れな回答が返ってきた」
「ChatGPTに聞いてみたけど、どこに何を貼ればいいか分からない」

AIチャットにLinuxのログを貼って質問する方法は広まっていますが、渡し方を誤ると精度が大幅に下がります。 ログの量が多すぎる、文脈が不足している、機密情報が混入している——こういった問題が、的外れな回答の主な原因です。

この記事では、journalctlやdmesgの出力をChatGPT・Claudeに渡す具体的な方法と、精度を上げるプロンプトの書き方を解説します。

この記事のポイント

・ログは「エラー行前後30行」に絞り、コンテキストとセットで渡す
・journalctl -xe --no-pager でページング解除して貼り付け可能な形式にする
・IPアドレス・ホスト名・パスは貼る前にマスキングする
・AIは「原因候補の列挙」には強いが「確定診断・対処コマンドの実行」には使わない

続きを読む "AIにLinuxトラブルを解析させる方法|journalctl・dmesgのログをChatGPT・Claudeに渡すコツ"

fuserコマンドで使用中のファイル・ポートを占有するプロセスを特定する方法|umount時のtarget is busy解消

「アンマウントしようとしたら target is busy と出た」「どのプロセスが/mntを掴んでいるのか分からない」——
そんな場面で、いきなりサーバーを再起動していませんか?

fuserコマンドを使えば、ファイルやディレクトリ、さらにはTCP/UDPポートを占有しているプロセスを一発で特定できます。
必要ならそのプロセスにシグナルを送って終了させることも可能です。

この記事では、RHEL 9.4 / Ubuntu 24.04 LTSで動作確認した上で、fuserコマンドの実践的な使い方を解説します。
umount時のbusyエラー解消、ポート占有プロセスの特定、安全なプロセス終了まで、現場で使う場面を一通りカバーします。

この記事のポイント

・fuser /mnt でマウントポイントを掴むプロセスを特定できる
・fuser -v でユーザー・コマンド名付きの詳細表示になる
・fuser -k -TERM /mnt でプロセスにSIGTERMを送って終了できる
・fuser 80/tcp でポート占有プロセスを特定できる(要root)

続きを読む "fuserコマンドで使用中のファイル・ポートを占有するプロセスを特定する方法|umount時のtarget is busy解消"

Linuxパスワード設定の注意点|特殊文字・PAMルール・レスキュー環境の落とし穴

「パスワードを設定したのに、ログインできない」「pwqualityに弾かれて、どんなパスワードを設定すればいいかわからない」

Linuxのパスワード設定は、一見シンプルですが、特殊文字の扱いやPAMのポリシー、レスキュー環境特有の問題など、ハマりやすいポイントが複数あります。

この記事では、Linuxにパスワードを設定する際の注意点を、特殊文字の挙動・pam_pwqualityのルール・レスキュー環境での落とし穴の3つの視点から整理します。RHEL10 / Rocky Linux 10 を主な対象としますが、基本的な考え方はRHEL9・Ubuntuにも共通します。
この記事のポイント
・@始まりパスワードはcracklibが「記号を除去」して辞書照合する
・pwscoreコマンドで設定前にパスワード強度をテストできる
・レスキュー環境はUSキーボード配列がデフォルト(jp106要loadkeys)
・特殊文字は「途中か末尾」に入れると辞書ヒットを回避しやすい

Linuxパスワード設定の注意点|特殊文字・PAMルール・レスキュー環境の落とし穴

続きを読む "Linuxパスワード設定の注意点|特殊文字・PAMルール・レスキュー環境の落とし穴"

RHEL10でrootパスワードを復旧する方法|GRUBとISOレスキューモードの2手順

「rootのパスワードを忘れてしまった」「RHEL10のサーバーにログインできなくなった」——
そんな場面に出くわしたとき、焦ってサーバーを再インストールしようとしていませんか?

実は、RHEL10にはrootパスワードを安全に再設定する方法が2つあります。
どちらも知っておけば、万が一の障害対応でも冷静に動けます。

この記事では、RHEL10でのrootパスワード設定・復旧方法を、実際の手順を交えて解説します。

この記事のポイント

・RHEL10でrootパスワードを復旧する2つの方法を解説
・GRUBから init=/bin/bash を使ったシングルユーザー的な起動手順
・ISOレスキューモードから chroot でパスワード再設定する手順
・SELinuxの .autorelabel が必要な理由と忘れた場合の影響


RHEL10でrootパスワードを復旧する方法|GRUBとISOレスキューモードの2手順

続きを読む "RHEL10でrootパスワードを復旧する方法|GRUBとISOレスキューモードの2手順"

htopコマンドでプロセスとリソースをインタラクティブに監視する方法|topとの違いや実務活用も

「サーバーの負荷が高いのは分かるが、どのプロセスが原因か top だと読みづらい」
topコマンドの出力は情報量こそ豊富なものの、数値がずらりと並ぶだけでCPUやメモリの偏りを瞬時に掴みにくい場面があります。

この記事では、htopコマンドの実践的な使い方を、topとの違い・色分けの読み方・プロセスの強制終了・実務でのトラブルシュートまで解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みの内容で、20年以上サーバーを運用してきた現場感覚でまとめました。

この記事のポイント

・htopはtopの上位互換、カラー表示と矢印キー操作で直感的に使える
・F9でシグナル送信、F6でソート基準変更が即時にできる
・treeビュー(F5)で親子関係を追えば暴走プロセスの根元が分かる
・RHEL系はEPELリポジトリ、Ubuntu系はapt1発でインストール可能

続きを読む "htopコマンドでプロセスとリソースをインタラクティブに監視する方法|topとの違いや実務活用も"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録