はじめに
はじめまして、HapIns株式会社の小林です。 業務でサーバーに触れる機会があり、Linuxコマンドを使う場面があるかと思います。
ただ、最初はコマンドをなんとなく覚えている状態で、ログ確認やファイル操作に思った以上に時間がかかってしまうことがありました。 (調べ物をしようにもそもそもスマホやPC禁止の現場であったり・・・)
そこで今回「実務でよく使うコマンド」を初心者目線で整理してみました。 これからLinuxを触る方や、触り始めたばかりの方の参考になればと思います。 教科書には載っていても、実務で「これが使えてよかった」と感じるコマンドを厳選しています。 初級〜中級エンジニア向けに、実例付きで解説します。
01. grep — ログの中から目的の行を探す
大量のログファイルから特定のキーワードを含む行だけを抽出できます。 現場でのトラブルシューティングで最も頻繁に使うコマンドの一つです。
# エラーを含む行を抽出 grep "ERROR" /var/log/app.log # 大文字小文字を区別しない (-i) + 行番号表示 (-n) grep -in "error" /var/log/app.log # 再帰的にディレクトリ配下を検索 grep -r "NullPointerException" /var/log/
ポイント パイプで他のコマンドと組み合わせると威力が増します。 「cat ファイル | grep キーワード」の形が基本です。
02. tail — ログのリアルタイム監視
ファイルの末尾を表示します。-f オプションで追記をリアルタイムに監視でき、
デプロイ中や障害対応時に欠かせません。
# 末尾100行を表示 tail -n 100 /var/log/app.log # リアルタイム監視(Ctrl+C で終了) tail -f /var/log/app.log # grep と組み合わせてエラーのみ監視 tail -f /var/log/app.log | grep "ERROR"
ポイント 複数ファイルを同時監視したい場合は
multitailコマンドも覚えておくと便利です。
03. find — ファイルの場所を探す
ファイル名・更新日時・サイズなど様々な条件でファイルを検索できます。 「どこに置いたか分からない」という場面で活躍します。
# ファイル名で検索
find /var -name "*.log"
# 1日以内に更新されたファイルを検索
find /home -mtime -1
# 検索したファイルに対してコマンドを実行
find /tmp -name "*.tmp" -exec rm {} \;
04. ps / kill — プロセス管理
動作中のプロセスを確認し、応答しないプロセスを終了させます。 「アプリが止まらない」時に最初に使うコマンドです。
# 全プロセスを表示 ps aux # プロセス名で絞り込む ps aux | grep java # プロセスを終了(PIDを指定) kill -9 12345
ポイント
kill -9は強制終了です。まずkill -15(正常終了の要求)を試すのが現場のマナーです。 また、killコマンドについて使用していいかは必ず確認しましょう。
05. df / du — ディスク容量の確認
ディスクがいっぱいになるとシステムが止まります。 定期的な確認と、容量を食っているディレクトリの特定に使います。
# ディスク全体の使用状況(人間が読みやすい形式) df -h # ディレクトリごとの容量(深さ1階層) du -sh /var/* # 大きい順にソートして表示 du -sh /var/* | sort -rh | head -10
06. chmod / chown — パーミッション変更
ファイルの権限や所有者を変更します。 デプロイ後に「Permission denied」が出た場面で使います。 権限はデリケートな箇所なので付与する際は慎重に行いましょう。
# 実行権限を付与 chmod +x deploy.sh # 数値指定(755: 所有者rwx、その他rx) chmod 755 /var/www/html # 所有者を変更 chown -R appuser:appgroup /opt/app
07. scp / rsync — ファイル転送
サーバー間でのファイルコピーに使います。
rsync は差分転送ができるため、大きなファイルや定期バックアップに向いています。
ただWinscpなどのファイル転送ツールを用いることが多いため頭の片隅に置く程度で問題ないと思います。
# ローカル→リモートへコピー scp ./app.jar user@server:/opt/app/ # 差分転送(進捗表示あり) rsync -avz ./dist/ user@server:/var/www/html/
これを先に学んでおけばよかったこと
正規表現の基礎
grep や find は正規表現と組み合わせてこそ真価を発揮します。
「.*」「^」「$」など基本パターンだけでも習得しておくと
実務で大きく差が出ます。
おわりに
今回紹介した7コマンドは、覚えるべき全てではありません。 しかし「まずこれだけ使えれば現場で困らない」という最小セットです。 コマンドは手を動かしながら覚えるのが一番です。 ぜひローカルの仮想環境などで試してみてください。