サーバー障害対応に追われて残業が増える──そんな状況を根本から断ち切るために作ったのが、この「Linux即応ワンライナー集」です。
原因特定に時間をかけず、1行で状況を把握・解決できれば、復旧スピードが飛躍的に上がります。
無駄な工数を減らし、生産性を最大化し、定時で帰れる環境を取り戻すための実践ツールです。
| カテゴリ | 目的/トラブル内容 | 代表コマンド(ワンライナー) | 説明 |
|---|---|---|---|
| トラブル即応 | CPU高騰 | ps -eo pid,cmd,%cpu --sort=-%cpu | head | 詳細 |
| メモリ圧迫 | free -h && ps -eo pid,%mem,cmd --sort=-%mem | head | 詳細 | |
| IO遅延 | iostat -x 1 3 | 詳細 | |
| ログ急増 | du -sh /var/log/* | sort -hr | head | 詳細 | |
| 権限変更検知 | find /etc -type f -mtime -1 | 詳細 | |
| 設定ファイル・構成解析系 | 空白行およびコメントを除外して表示 | grep -vE '^\s*($|#)' /usr/lib/systemd/system/postgresql-15.service | 詳細 |
| 設定ファイルの行番号付き表示(デバッグ用) | nl -ba /etc/httpd/conf/httpd.conf | grep -n "Listen" | 詳細 | |
| 監視・調査 | 全体負荷 | vmstat 1 5 | 詳細 |
| 通信数 | ss -tan | wc -l | 詳細 | |
| 接続先判定 | lsof -i | grep ESTABLISHED | 詳細 | |
| ネット遅延 | ping -c4 8.8.8.8 | 詳細 | |
| 経路確認 | traceroute example.com | 詳細 | |
| ログ・監視系 | 今日の日付のエラーログだけを抽出 | grep "$(date +%Y-%m-%d)" /var/log/httpd/error_log | 詳細 |
| 直近のエラーログをリアルタイム監視 | tail -f /var/log/messages | grep --line-buffered -i error | 詳細 | |
| ログに出現するIPアドレスの出現回数をランキング | awk '{print $1}' /var/log/secure | sort | uniq -c | sort -nr | head | 詳細 | |
| プロセス・サービス系 | プロセスをメモリ使用量順に表示 | ps aux --sort=-%mem | head -20 | 詳細 |
| 特定のポートを利用しているプロセスを表示 | lsof -i:5432 | 詳細 | |
| プロセスを名前で探してkill | pkill -f tomcat | 詳細 | |
| 状態 | systemctl status nginx | 詳細 | |
| 再起動 | systemctl restart nginx | 詳細 | |
| 失敗一覧 | systemctl list-units --failed | 詳細 | |
| ポート占有 | lsof -i :80 | 詳細 | |
| 強制終了 | pkill -9 nginx | 詳細 | |
| ネットワーク系 | 特定ポートのリッスン状態を確認 | ss -lntp | grep 22 | 詳細 |
| サーバーとの応答時間を測定 | curl -o /dev/null -s -w "%{time_total}\n" http://example.com | 詳細 | |
| ディスク・ファイル系 | 容量上位 | du -sh * | sort -hr | head | 詳細 |
| ファイル肥大 | find / -size +100M | 詳細 | |
| 使用率確認 | df -h | 詳細 | |
| マウント | mount | column -t | 詳細 | |
| 削除後残留 | lsof | grep deleted | 詳細 | |
| ディスク使用率が高いディレクトリを特定 | du -h --max-depth=1 /var | sort -hr | head -20 | 詳細 | |
| 古いログファイルを削除(30日より古いもの) | find /var/log -type f -mtime +30 -delete | 詳細 | |
| 直近1時間で更新されたファイルを表示 | find /var/www -type f -mmin -60 | 詳細 | |
| バックアップ・転送 | 圧縮保存 | tar czf backup_$(date +%F).tar.gz /etc | 詳細 |
| 世代保持 | rsync -a --link-dest=/backup/prev /data/ /backup/new/ | 詳細 | |
| 差分確認 | rsync -n --delete /src/ /dst/ | 詳細 | |
| DB保存 | mysqldump -u root -p db > db_$(date +%F).sql | 詳細 | |
| リモートコピー | scp file user@host:/backup/ | 詳細 | |
| セキュリティ確認 | SELinux | getenforce | 詳細 |
| FW設定 | firewall-cmd --list-all | 詳細 | |
| SSH失敗 | grep "Failed" /var/log/secure | 詳細 | |
| 権限危険 | find / -perm 777 | 詳細 | |
| ACL確認 | getfacl ファイル | 詳細 | |
| sudo実行履歴を確認 | grep "COMMAND=" /var/log/secure | 詳細 | |
| ログイン失敗のIPをランキング | grep "Failed password" /var/log/secure | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head | 詳細 | |
| テキスト処理・運用系 | CSVの特定列だけを抜き出す | cut -d, -f2,5 input.csv | 詳細 |
| 複数ログを結合してエラー行のみ表示 | cat /var/log/*.log | grep -i error | 詳細 | |
| ファイルの重複行を削除 | sort file.txt | uniq | 詳細 | |
| 構成確認 | NIC | nmcli device status | 詳細 |
| DNS | resolvectl status | 詳細 | |
| UUID | blkid | 詳細 | |
| パス検証 | namei -l /path/to/file | 詳細 | |
| 依存解決 | ldd /usr/bin/対象 | 詳細 |
トラブル即応
サーバーで最も多いトラブルは「負荷上昇」「ログ肥大」「権限変更」など、放置すればシステム停止に直結する問題です。
ここでは、異常を即座に検知・判断し、原因を特定するための即応ワンライナーを紹介します。
CPU高騰の原因解析
CPU使用率が異常に上昇したとき、どのプロセスがCPUを占有しているかを即座に確認します。
【書式:】
ps -eo pid,cmd,%cpu --sort=-%cpu | head -[行数]
[行数]:上位何件を表示するかを指定(例:10)
【コマンド例:】
ps -eo pid,cmd,%cpu --sort=-%cpu | head -10
【出力例:】
PID CMD %CPU
2431 /usr/lib/jvm/java-17-openjdk/bin/java 97.3
1824 /usr/bin/python3 12.6
この1行でCPUを大量消費しているプロセスを瞬時に特定できます。その結果、システム全体の遅延を防げます。
メモリ圧迫の原因解析
メモリ不足によるスワップ発生やサービス停止を未然に防ぐために、メモリ使用量を確認します。
【書式:】
free -h && ps -eo pid,%mem,cmd --sort=-%mem | head -[行数]
[行数]:上位のプロセス数を指定(例:10)
【コマンド例:】
free -h && ps -eo pid,%mem,cmd --sort=-%mem | head -10
【出力例:】
Mem: 3.8G 3.6G 200M
PID %MEM CMD
2431 70.5 /usr/lib/jvm/java
この1行でメモリを多く消費しているプロセスを把握できます。その結果、メモリ枯渇による障害を防げます。
IO遅延の調査
CPUやメモリが正常でも遅い場合、IO待ちが原因かどうかを確認します。
【書式:】
iostat -x [間隔秒] [回数]
[間隔秒]:サンプリング間隔(例:1秒)
[回数]:繰り返し回数(例:3回)
【コマンド例:】
iostat -x 1 3
【出力例:】
Device r/s w/s %util
sda 125.0 5.0 98.5
この1行でディスクIOの過負荷を特定できます。その結果、処理遅延や応答停止を防げます。
ログ急増の検知
ログディレクトリが急激に肥大化していないかを確認し、異常な出力を早期に発見します。
【書式:】
du -sh [ディレクトリ]/* | sort -hr | head -[件数]
[ディレクトリ]:監視対象のパス
[件数]:上位何件を表示するか(例:10)
【コマンド例:】
du -sh /var/log/* | sort -hr | head -10
【出力例:】
450M /var/log/httpd
120M /var/log/secure
この1行で容量の増加が著しいログを特定できます。その結果、ディスク圧迫やサービス停止を防げます。
権限変更の検知
直近でファイルのパーミッションが変更された形跡を調査し、不正操作を検知します。
【書式:】
find [ディレクトリ] -type f -mtime -[日数]
[ディレクトリ]:監視対象パス
[日数]:変更検知期間(日数)
【コマンド例:】
find /etc -type f -mtime -1
【出力例:】
/etc/ssh/sshd_config
/etc/httpd/conf/httpd.conf
この1行で最近変更された重要ファイルを即座に確認できます。その結果、設定改ざんや侵入を特定できます。
設定ファイル・構成解析系
設定トラブルの多くは「どの設定が有効か分からない」「誰かが勝手に編集した」など、構成の把握不足から起こります。
このカテゴリでは、設定ファイルを安全かつ正確に読み解くためのワンライナーを紹介します。
コメント・空白行を除外して設定の実態を確認する
設定ファイル内のコメント行や空白行を除外し、実際に有効な設定内容だけを抽出します。
【書式:】
grep -vE '^\s*($|#)' [ファイルパス]
[ファイルパス]:解析対象の設定ファイルを指定
【コマンド例:】
grep -vE '^\s*($|#)' /usr/lib/systemd/system/postgresql-15.service
【出力例:】
[Service]
ExecStart=/usr/bin/postgres -D /var/lib/pgsql/15/data
この1行でコメントを除いた実際の設定構成を把握できます。その結果、設定ミスの早期特定ができます。
設定ファイルを行番号付きで表示し、問題箇所を特定する
設定トラブルの調査では、行番号を伴って内容を確認することでエラー箇所の特定が容易になります。
【書式:】
nl -ba [ファイルパス] | grep -n [キーワード]
[ファイルパス]:対象の設定ファイル
[キーワード]:検索したい設定項目(例:Listen)
【コマンド例:】
nl -ba /etc/httpd/conf/httpd.conf | grep -n "Listen"
【出力例:】
52 Listen 80
120 # Listen 443
この1行で該当設定の位置と状態をすぐに確認できます。その結果、設定漏れや重複を防げます。
監視・調査
システムの不調をいち早く察知するには、CPU・メモリ・通信・ネットワーク経路などの状態を常に観測することが重要です。
このカテゴリでは、負荷状況や通信状態を素早く把握し、異常の兆候を特定するためのワンライナーを紹介します。
全体負荷の状態を確認する
サーバー全体のCPU、メモリ、プロセス状態などを統合的に監視します。
【書式:】
vmstat [間隔秒] [回数]
[間隔秒]:サンプリング間隔(例:1秒)
[回数]:繰り返し回数(例:5回)
【コマンド例:】
vmstat 1 5
【出力例:】
procs ---memory--- ---swap--- ---io--- system ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 250000 40000 600000 0 0 1 2 120 250 10 5 85 0 0
この1行でCPU負荷や待機状態を総合的に把握できます。その結果、リソースボトルネックを特定できます。
通信数の増加を監視する
現在サーバーが処理しているTCPコネクション数を確認し、過負荷状態を検知します。
【書式:】
ss -tan | wc -l
ss:ソケット情報を表示
wc -l:行数をカウント(=コネクション数)
【コマンド例:】
ss -tan | wc -l
【出力例:】
145
この1行で現在のTCP接続数を即確認できます。その結果、トラフィック急増を早期に検知できます。
接続先プロセスを確認する
サーバーがどの外部先と通信しているかを特定します。
【書式:】
lsof -i | grep [状態]
[状態]:接続状態(例:ESTABLISHED, LISTENなど)
【コマンド例:】
lsof -i | grep ESTABLISHED
【出力例:】
sshd 1234 root TCP 192.168.0.10:ssh->192.168.0.5:50432 (ESTABLISHED)
この1行でどのプロセスが外部と通信しているか把握できます。その結果、不審な接続を特定できます。
ネットワーク遅延を調べる
サーバーから特定先までの応答速度を測定し、通信遅延を把握します。
【書式:】
ping -c [回数] [宛先]
[回数]:送信パケット数(例:4)
[宛先]:ホスト名またはIPアドレス
【コマンド例:】
ping -c4 8.8.8.8
【出力例:】
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.3 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=12.5 ms
この1行でネットワーク応答速度を即確認できます。その結果、遅延や断続的な通信障害を特定できます。
通信経路を確認する
通信がどの経路を通って目的地に到達しているかを追跡します。
【書式:】
traceroute [ホスト名]
[ホスト名]:宛先となるドメインやIPを指定
【コマンド例:】
traceroute example.com
【出力例:】
1 192.168.0.1 1.234 ms
2 203.0.113.1 5.321 ms
3 example.com 10.453 ms
この1行で通信経路を詳細に確認できます。その結果、経路上の遅延や障害ポイントを特定できます。
ログ・監視系
システムトラブルの初期対応で最も重要なのは、エラーログの把握と監視です。
ここでは、ログの中から異常を即座に検出し、原因特定につなげるためのワンライナーを紹介します。
今日発生したエラーを抽出する
本日発生したエラーだけを抽出し、不要なノイズを省いて確認します。
【書式:】
grep "$(date +%Y-%m-%d)" [ログファイルパス]
[ログファイルパス]:対象となるログファイル(例:/var/log/httpd/error_log)
【コマンド例:】
grep "$(date +%Y-%m-%d)" /var/log/httpd/error_log
【出力例:】
[2025-10-13 09:12:31] [error] [client 192.168.0.5] PHP Fatal error: Uncaught Exception
[2025-10-13 09:15:02] [error] [client 192.168.0.7] File not found: /var/www/html/favicon.ico
この1行で当日発生したエラーのみを抽出できます。その結果、異常発生のタイミングを即特定できます。
リアルタイムでエラーログを監視する
ログを監視しながら「error」や「fail」を含む行だけをリアルタイムで表示します。
【書式:】
tail -f [ログファイルパス] | grep --line-buffered -i [キーワード]
[ログファイルパス]:監視対象のログ
[キーワード]:抽出したい単語(例:error、failなど)
【コマンド例:】
tail -f /var/log/messages | grep --line-buffered -i error
【出力例:】
Oct 13 09:42:31 web01 kernel: error reading block 12345
Oct 13 09:42:33 web01 httpd[2312]: error: failed to bind socket
この1行でエラーログをリアルタイムに監視できます。その結果、障害発生を即座に把握できます。
ログ内のIPアドレスを集計して発生源を特定する
アクセスや攻撃の発生元を調査するため、ログ内のIPを出現回数順に並べます。
【書式:】
awk '{print $1}' [ログファイルパス] | sort | uniq -c | sort -nr | head -[件数]
[ログファイルパス]:解析対象のログファイル
[件数]:上位に表示する件数(例:10)
【コマンド例:】
awk '{print $1}' /var/log/secure | sort | uniq -c | sort -nr | head -10
【出力例:】
1520 203.0.113.21
732 198.51.100.12
101 192.168.0.5
この1行でアクセス元の頻度を可視化できます。その結果、攻撃的なアクセス元を特定できます。
プロセス・サービス系
サーバーの動作不良や停止は、プロセスやサービスの状態に起因することが多いです。
このカテゴリでは、稼働中のプロセスやサービスを素早く特定・制御するためのワンライナーを紹介します。
メモリ使用量順にプロセスを表示する
メモリを多く使用しているプロセスを上位から確認し、異常な使用を検出します。
【書式:】
ps aux --sort=-%mem | head -[件数]
[件数]:上位何件を表示するか(例:20)
【コマンド例:】
ps aux --sort=-%mem | head -20
【出力例:】
USER PID %MEM COMMAND
root 2431 45.6 /usr/lib/jvm/java
apache 1824 12.1 /usr/sbin/httpd
この1行でメモリ消費が大きいプロセスを即特定できます。その結果、メモリ圧迫の原因を特定できます。
特定ポートを使用しているプロセスを確認する
指定したポートを利用しているプロセスを特定し、占有状態を確認します。
【書式:】
lsof -i:[ポート番号]
[ポート番号]:確認したい通信ポート(例:5432)
【コマンド例:】
lsof -i:5432
【出力例:】
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 2312 postgres u IPv6 12345 0t0 TCP *:5432 (LISTEN)
この1行で指定ポートを使用するプロセスを確認できます。その結果、競合や誤起動を特定できます。
特定の名前を含むプロセスを強制終了する
プロセス名を指定して関連プロセスをまとめて停止します。
【書式:】
pkill -f [プロセス名]
[プロセス名]:停止対象の名称(例:tomcat)
【コマンド例:】
pkill -f tomcat
【出力例:】
(出力なし)
この1行で指定した名前のプロセスを一括終了できます。その結果、暴走や重複起動を防げます。
サービスの稼働状態を確認する
特定のサービスが動作しているか、停止しているかを確認します。
【書式:】
systemctl status [サービス名]
[サービス名]:確認対象(例:nginx)
【コマンド例:】
systemctl status nginx
【出力例:】
● nginx.service - The nginx HTTP and reverse proxy server
Active: active (running) since Mon 2025-10-13 09:12:45 JST; 10min ago
この1行でサービスの稼働状態を把握できます。その結果、停止や異常を即検出できます。
サービスを再起動する
サービスを即座に再起動して異常をリセットします。
【書式:】
systemctl restart [サービス名]
[サービス名]:再起動対象(例:nginx)
【コマンド例:】
systemctl restart nginx
【出力例:】
(出力なし)
この1行でサービスを即再起動できます。その結果、応答停止や不具合を迅速に解消できます。
失敗したサービス一覧を確認する
異常停止したサービスや起動に失敗したユニットを確認します。
【書式:】
systemctl list-units --failed
【コマンド例:】
systemctl list-units --failed
【出力例:】
UNIT LOAD ACTIVE SUB DESCRIPTION
httpd.service loaded failed failed The Apache HTTP Server
この1行で失敗しているサービスを一覧化できます。その結果、起動異常を即特定できます。
ポート占有状況を確認する
指定ポートがどのプロセスに占有されているかを調査します。
【書式:】
lsof -i :[ポート番号]
[ポート番号]:調査したい通信ポート(例:80)
【コマンド例:】
lsof -i :80
【出力例:】
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1043 root u IPv4 12145 0t0 TCP *:http (LISTEN)
この1行でポートの占有状況を即確認できます。その結果、競合や不正起動を防げます。
プロセスを強制終了する
応答しないプロセスを即座に強制終了します。
【書式:】
pkill -9 [プロセス名]
[プロセス名]:強制終了対象の名称(例:nginx)
【コマンド例:】
pkill -9 nginx
【出力例:】
(出力なし)
この1行で応答不能なプロセスを強制停止できます。その結果、CPU暴走やリソース浪費を防げます。
ネットワーク系
ネットワークトラブルの初動は、通信の有無・応答速度・ポート状態の確認から始まります。
このカテゴリでは、サーバーの通信状態を可視化し、遅延や接続不良を素早く特定するためのワンライナーを紹介します。
特定ポートのリッスン状態を確認する
サービスが待受状態(LISTEN)になっているかを確認し、通信ポートが開いているかを判断します。
【書式:】
ss -lntp | grep [ポート番号]
[ポート番号]:確認対象のポート番号(例:22、80など)
【コマンド例:】
ss -lntp | grep 22
【出力例:】
LISTEN 0 128 0.0.0.0:22 * users:(("sshd",pid=1234,fd=3))
この1行で特定ポートが待受状態にあるかを即確認できます。その結果、通信不能やサービス未起動を防げます。
サーバーとの応答時間を測定する
指定したURLへのリクエスト応答時間を計測し、通信遅延の有無を判断します。
【書式:】
curl -o /dev/null -s -w "%{time_total}\n" [URL]
[URL]:計測対象のURL(例:http://example.com)
【コマンド例:】
curl -o /dev/null -s -w "%{time_total}\n" http://example.com
【出力例:】
0.183
この1行でサーバー応答時間を数値で確認できます。その結果、レスポンス遅延の有無を特定できます。
ディスク・ファイル系
ディスク容量の逼迫やファイル肥大は、サーバー停止の直接的な原因になります。
このカテゴリでは、容量の偏りや肥大ファイル、古いログを一瞬で特定・整理するためのワンライナーを紹介します。
容量の大きいディレクトリを特定する
ディスク使用量が多いディレクトリを上位から確認し、どこが容量を圧迫しているかを把握します。
【書式:】
du -sh [対象パス]/* | sort -hr | head -[件数]
[対象パス]:調査対象のディレクトリ(例:/var/log)
[件数]:上位に表示する件数(例:10)
【コマンド例:】
du -sh /var/* | sort -hr | head -10
【出力例:】
3.4G /var/log
2.1G /var/lib
820M /var/www
この1行で容量の大きいディレクトリを即特定できます。その結果、ディスク圧迫の原因を把握できます。
肥大化したファイルを検出する
100MBを超える大きなファイルを検索して、不要なデータを特定します。
【書式:】
find [検索パス] -size +[サイズ指定]
[検索パス]:検索対象ディレクトリ(例:/)
[サイズ指定]:サイズ閾値(例:100M)
【コマンド例:】
find / -size +100M
【出力例:】
/var/log/maillog.1
/home/user/backup.iso
この1行で肥大ファイルを一覧化できます。その結果、不要データの削除判断ができます。
ディスク使用率を確認する
各マウントポイントのディスク使用率を一目で確認します。
【書式:】
df -h
【コマンド例:】
df -h
【出力例:】
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 50G 30G 18G 63% /
この1行でディスク全体の使用率を確認できます。その結果、容量逼迫を早期に防げます。
マウント情報を確認する
現在のマウント状態を整形して表示し、どのデバイスがどこにマウントされているかを確認します。
【書式:】
mount | column -t
【コマンド例:】
mount | column -t
【出力例:】
/dev/sda2 on / type ext4 (rw,relatime)
/dev/sdb1 on /backup type xfs (rw,relatime)
この1行でマウント状況を整然と確認できます。その結果、誤マウントや未マウントを防げます。
削除済みだが残留しているファイルを確認する
削除されたはずなのにプロセスが保持しているファイルを検出します。
【書式:】
lsof | grep deleted
【コマンド例:】
lsof | grep deleted
【出力例:】
nginx 2341 root 4r REG 8,1 1048576 12345 /var/log/access.log (deleted)
この1行で削除残留ファイルを特定できます。その結果、容量解放漏れを防げます。
特定ディレクトリの使用率を深掘り確認する
指定ディレクトリ配下の容量を階層ごとに集計し、使用率の高い場所を突き止めます。
【書式:】
du -h --max-depth=[階層数] [対象ディレクトリ] | sort -hr | head -[件数]
[階層数]:深さ制限(例:1)
[件数]:上位表示数(例:20)
【コマンド例:】
du -h --max-depth=1 /var | sort -hr | head -20
【出力例:】
3.4G /var/log
1.8G /var/lib
500M /var/www
この1行で特定ディレクトリ配下の容量分布を確認できます。その結果、肥大箇所を迅速に特定できます。
古いログファイルを自動削除する
一定期間を過ぎた不要なログを削除し、ディスクを健全に保ちます。
【書式:】
find [ディレクトリ] -type f -mtime +[日数] -delete
[ディレクトリ]:削除対象のパス(例:/var/log)
[日数]:削除対象とする経過日数(例:30)
【コマンド例:】
find /var/log -type f -mtime +30 -delete
【出力例:】
(出力なし)
この1行で古いログを自動削除できます。その結果、定期的な容量管理を効率化できます。
直近1時間で更新されたファイルを確認する
ファイル更新履歴を確認し、直近に変更のあったファイルを特定します。
【書式:】
find [ディレクトリ] -type f -mmin -[分数]
[ディレクトリ]:監視対象パス(例:/var/www)
[分数]:直近分数(例:60)
【コマンド例:】
find /var/www -type f -mmin -60
【出力例:】
/var/www/html/index.html
/var/www/html/config.php
この1行で最新更新ファイルを即確認できます。その結果、予期しない変更や改ざんを特定できます。
バックアップ・転送
バックアップは障害復旧の最後の砦です。
このカテゴリでは、設定やデータを安全に保全・転送し、障害時に即復旧できる状態を維持するためのワンライナーを紹介します。
設定ファイルを圧縮して保存する
ディレクトリ全体を圧縮し、日付付きファイルとしてバックアップします。
【書式:】
tar czf [出力ファイル名] [バックアップ対象ディレクトリ]
[出力ファイル名]:保存ファイル名(例:backup_$(date +%F).tar.gz)
[バックアップ対象ディレクトリ]:保存対象ディレクトリ(例:/etc)
【コマンド例:】
tar czf backup_$(date +%F).tar.gz /etc
【出力例:】
(出力なし)
この1行でシステム設定を圧縮保存できます。その結果、構成情報の損失を防げます。
バックアップを世代管理する
rsyncを利用して差分リンクを作成し、古いバックアップとの整合性を保ちながら世代を保持します。
【書式:】
rsync -a --link-dest=[前回バックアップディレクトリ] [コピー元] [新規バックアップディレクトリ]
[前回バックアップディレクトリ]:前回のバックアップ先
[コピー元]:同期元(例:/data/)
[新規バックアップディレクトリ]:今回の保存先(例:/backup/new/)
【コマンド例:】
rsync -a --link-dest=/backup/prev /data/ /backup/new/
【出力例:】
(出力なし)
この1行で差分バックアップを効率的に作成できます。その結果、世代管理と容量削減を両立できます。
バックアップの差分を確認する
コピー元とバックアップ先を比較し、変更点を確認します。
【書式:】
rsync -n --delete [コピー元] [コピー先]
[コピー元]:元データのディレクトリ(例:/src/)
[コピー先]:バックアップ保存先(例:/dst/)
【コマンド例:】
rsync -n --delete /src/ /dst/
【出力例:】
deleting old.log
sending incremental file list
newfile.txt
この1行でバックアップとの差分を確認できます。その結果、変更点の有無を安全に検証できます。
データベースをバックアップする
mysqldumpを使って指定データベースをSQLファイルとしてエクスポートします。
【書式:】
mysqldump -u [ユーザー名] -p [データベース名] > [出力ファイル名]
[ユーザー名]:MySQLユーザー(例:root)
[データベース名]:バックアップ対象DB(例:appdb)
[出力ファイル名]:保存先(例:db_$(date +%F).sql)
【コマンド例:】
mysqldump -u root -p db > db_$(date +%F).sql
【出力例:】
Enter password:
(バックアップ処理が進行)
この1行でDBの完全バックアップを取得できます。その結果、データ損失時の迅速な復旧が可能になります。
ファイルをリモートサーバーに転送する
scpを利用してファイルをリモートホストへ安全にコピーします。
【書式:】
scp [ファイル名] [ユーザー名]@[ホスト名]:[転送先パス]
[ファイル名]:送信対象(例:backup.tar.gz)
[ユーザー名]:リモート接続ユーザー
[ホスト名]:リモートサーバーのホスト名またはIP
[転送先パス]:保存先ディレクトリ(例:/backup/)
【コマンド例:】
scp file user@host:/backup/
【出力例:】
file 100% 123KB 0.1MB/s 00:01
この1行でファイルを安全にリモート転送できます。その結果、遠隔バックアップやサーバー間同期を効率化できます。
セキュリティ確認
セキュリティの脆弱性は、気づかないうちに侵入を許す最大の原因です。
このカテゴリでは、不正アクセス・設定ミス・危険な権限を即発見できるワンライナーを紹介します。
開いているポートを確認する
外部からアクセス可能なポートを一覧表示し、不正な開放を特定します。
【書式:】
ss -tuln
【コマンド例:】
ss -tuln
【出力例:】
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
この1行で通信待受中のポートを確認できます。その結果、不必要なポート開放を防げます。
SELinuxの有効状態を確認する
システム全体でSELinuxが有効か無効かを判定します。
【書式:】
getenforce
【コマンド例:】
getenforce
【出力例:】
Enforcing
この1行でSELinuxの稼働状態を確認できます。その結果、ポリシー適用漏れを防げます。
ファイアウォール設定を確認する
firewalldの動作状況と許可ルールを一覧表示します。
【書式:】
firewall-cmd --list-all
【コマンド例:】
firewall-cmd --list-all
【出力例:】
public (active)
interfaces: eth0
sources:
services: ssh http https
ports:
protocols:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
この1行で現在のファイアウォール構成を確認できます。その結果、誤開放や設定抜けを防げます。
rootログインの履歴を確認する
rootアカウントでのログイン履歴を抽出し、不審なアクセスを検知します。
【書式:】
last | grep root
【コマンド例:】
last | grep root
【出力例:】
root pts/0 192.168.1.5 Mon Oct 13 13:10 - 13:15 (00:05)
この1行でrootの接続履歴を確認できます。その結果、不審なリモートアクセスを特定できます。
sudo失敗履歴を確認する
認証失敗ログを抽出し、不正試行を検出します。
【書式:】
grep "sudo" /var/log/secure | grep "authentication failure"
【コマンド例:】
grep "sudo" /var/log/secure | grep "authentication failure"
【出力例:】
Oct 13 10:25:31 server01 sudo: user1 : authentication failure; tty=/dev/pts/0; pwd=/home/user1; user=root
この1行でsudo失敗履歴を検出できます。その結果、不正な権限昇格の試行を把握できます。
権限777のファイルを検索する
誰でも書き込み可能な危険ファイルを抽出します。
【書式:】
find [検索パス] -type f -perm 777
[検索パス]:調査対象ディレクトリ(例:/var/www)
【コマンド例:】
find /var/www -type f -perm 777
【出力例:】
/var/www/html/test.php
この1行で危険な権限を持つファイルを検出できます。その結果、不正改ざんのリスクを防げます。
SUIDが設定されたファイルを確認する
root権限を取得可能な危険ファイルを確認します。
【書式:】
find / -perm -4000 2>/dev/null
【コマンド例:】
find / -perm -4000 2>/dev/null
【出力例:】
/usr/bin/passwd
/usr/bin/su
/usr/bin/sudo
この1行でSUID設定ファイルを特定できます。その結果、不要な権限昇格リスクを防げます。
ログイン失敗を確認する
/var/log/secureからログイン失敗履歴を抽出して、不正アクセスを検知します。
【書式:】
grep "Failed password" /var/log/secure
【コマンド例:】
grep "Failed password" /var/log/secure
【出力例:】
Oct 13 14:22:12 server01 sshd[2201]: Failed password for invalid user test from 192.168.1.10 port 51234 ssh2
この1行でログイン失敗履歴を確認できます。その結果、不正な試行元を特定できます。
テキスト処理・運用系
サーバー運用ではログやCSVなどのテキストを扱う場面が多くあります。
ここでは、ファイルを素早く整形・抽出・分析するためのワンライナーを紹介します。
日々の運用効率を大きく左右する、最小単位の自動化テクニックです。
CSVの特定列だけを抜き出す
CSVファイルの中から必要な列だけを抽出し、確認や再加工を効率化します。
【書式:】
cut -d, -f[列番号] [ファイル名]
区切り文字を「,」として、指定した列番号を抽出
【コマンド例:】
cut -d, -f2,5 input.csv
【出力例:】
user01,Tokyo
user02,Osaka
user03,Nagoya
この1行でCSVから特定列を取り出せます。その結果、必要なデータだけを効率的に分析できます。
複数ログを結合してエラー行のみ表示する
複数のログを一度に読み込み、エラーを含む行だけを抽出します。
【書式:】
cat [ログパス] | grep -i error
全ログを結合して大文字小文字を区別せず「error」を検索
【コマンド例:】
cat /var/log/*.log | grep -i error
【出力例:】
[ERROR] Database connection failed
[ERROR] Timeout while connecting to API
この1行で複数ログの中からエラーのみを抽出できます。その結果、障害の兆候をすぐに特定できます。
ファイルの重複行を削除する
ファイル内で重複している行を除去し、データの整理を行います。
【書式:】
sort [ファイル名] | uniq
ソートしてから重複行をまとめ、ユニークな行のみを出力
【コマンド例:】
sort file.txt | uniq
【出力例:】
server01
server02
server03
この1行でファイル内の重複行を削除できます。その結果、情報の重複を防ぎ、ログの整理を効率化できます。
構成確認
システムの構成を正確に把握することは、トラブル防止や変更時の影響調査に欠かせません。
ここでは、ネットワーク・デバイス・依存関係など、基盤構成を即座に確認するためのワンライナーをまとめます。
NICの状態を確認する
ネットワークインターフェースカード(NIC)の接続状態を一覧表示します。
【書式:】
nmcli device status
NetworkManager管理下の全デバイスの状態(connected/disconnected)を表示
【コマンド例:】
nmcli device status
【出力例:】
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected ens33
lo loopback unmanaged --
この1行でNICの状態を確認できます。その結果、ネットワーク断や未接続デバイスを即座に特定できます。
DNS設定を確認する
システムが使用しているDNSサーバーと解決状態を確認します。
【書式:】
resolvectl status
systemd-resolvedによるDNSサーバーと検索ドメイン設定を一覧
【コマンド例:】
resolvectl status
【出力例:】
Global
DNS Servers: 8.8.8.8
DNS Domain: localdomain
この1行でDNS設定を確認できます。その結果、名前解決トラブルの原因を即座に突き止められます。
UUIDを確認する
各ブロックデバイスに割り当てられたUUIDを一覧表示します。
【書式:】
blkid
接続ディスクやパーティションのUUID・ファイルシステムタイプを確認
【コマンド例:】
blkid
【出力例:】
/dev/sda1: UUID="e7f8b0b1-3c6f-42a3-9f3a-44f86b1e53a4" TYPE="xfs"
/dev/sdb1: UUID="b4a1e9d1-59aa-4013-b322-3a7a34c2333d" TYPE="ext4"
この1行でディスクのUUIDを確認できます。その結果、fstab設定やバックアップ先の識別を誤るリスクを防げます。
パス構造を検証する
指定したファイルやディレクトリまでのアクセス権や存在を一括確認します。
【書式:】
namei -l [パス]
パス構成ごとにパーミッションと所有者を階層的に表示
【コマンド例:】
namei -l /var/www/html/index.html
【出力例:】
f: /var/www/html/index.html
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x root root www
drwxr-xr-x apache apache html
-rw-r--r-- apache apache index.html
この1行でパス構造を検証できます。その結果、アクセス権や所有権の不整合を事前に防げます。
依存関係を確認する
バイナリファイルがどのライブラリに依存しているかを確認します。
【書式:】
ldd [ファイルパス]
ELF形式バイナリの依存ライブラリとリンク先を一覧表示
【コマンド例:】
ldd /usr/bin/ssh
【出力例:】
linux-vdso.so.1 (0x00007ffd92dfe000)
libcrypto.so.3 => /lib64/libcrypto.so.3 (0x00007f7a3b8f0000)
libc.so.6 => /lib64/libc.so.6 (0x00007f7a3b520000)
この1行で依存ライブラリを確認できます。その結果、モジュール不足やリンクエラーを迅速に特定できます。
