エンジニア歴3年の私が、新人時代に「これを知っていれば...」と後悔したLinuxコマンドを大公開します!
入社当初、先輩から「ログを確認して」と言われても、どのコマンドを使えばいいのか分からず、毎回Google検索していた苦い思い出があります。そんな経験から、現場で本当に使えるLinuxコマンドを厳選してまとめました。
この記事を読めば、障害対応からパフォーマンス分析まで、テストエンジニアとして必要なLinuxスキルが一気に身につきます!
ファイル・ディレクトリ操作:基礎の基礎
ファイル確認コマンド
まずは基本中の基本から。ログファイルの確認は日常茶飯事ですよね!
cat /etc/passwd # ファイル全体を表示
more /var/log/messages # 大きなファイルをページ単位で表示
less /var/log/syslog # 前後スクロール可能、検索もできる
head -20 /var/log/nginx.log # 先頭20行を表示
tail -f /var/log/apache.log # リアルタイムでログを監視
プロのコツ:more
は前方向のみ、less
は双方向スクロール可能で検索機能(/キーワード
)も使えます。メモリ使用量も少ないので、大きなファイルにはless
がおすすめ!
ファイル検索コマンド
「あのファイル、どこにあったっけ?」そんな時に威力を発揮するコマンド群です。
find /var/log -name "*.log" -mtime -7 # 7日以内に更新されたログファイル
find /home -type f -size +100M # 100MB以上のファイル
find /etc -name "*.conf" -exec grep -l "port" {} \; # "port"を含む設定ファイル
updatedb # locateデータベース更新
locate nginx.conf # ファイルを高速検索
which python3 # コマンドのパスを表示
whereis nginx # バイナリ、ソース、マニュアルの場所
権限管理
セキュリティの基本!権限設定を間違えると大変なことになります。
ls -la /etc/passwd # 詳細な権限情報を表示
chmod 755 /usr/local/bin/script.sh # rwxr-xr-x権限に設定
chmod u+x,g+r,o-w filename # シンボルモードで権限変更
chown nginx:nginx /var/www/html # 所有者とグループを変更
chgrp www-data /var/log/nginx/ # グループ所有権を変更
chmod +t /tmp # スティッキービット設定
chmod +s /usr/bin/passwd # SUID設定
重要ポイント:権限管理はLinuxセキュリティの基礎です。chmod
/chown
/chgrp
の使い分けをマスターしましょう!
システム監視・パフォーマンス分析
リソース監視
システムの健康状態をチェックする必須コマンドです。
top # リアルタイムシステム状況
htop # 美しいインターフェースのtop
ps aux | grep nginx # 特定プロセスの確認
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -10 # CPU使用率ランキング
free -h # メモリ使用状況
cat /proc/meminfo # メモリ詳細情報
vmstat 1 5 # 1秒間隔でシステム状況を5回表示
ディスク容量管理
「ディスク容量不足です」というアラートが来た時の対処法!
df -h # ディスク使用率確認
du -sh /var/log/* # ディレクトリサイズ確認
du -ah /home | sort -rh | head -20 # 容量の大きいファイル・ディレクトリTOP20
iostat -x 1 # ディスクI/O統計を1秒間隔で表示
iotop # プロセス別I/O使用量
ネットワーク監視
接続問題の切り分けに必須のコマンド群です。
netstat -tulpn # ポート監視状況
ss -tulpn # より高速なnetstatの代替
lsof -i :80 # 80番ポートを使用しているプロセス
iftop # リアルタイム通信量監視
nethogs # プロセス別ネットワーク使用量
tcpdump -i eth0 port 80 # パケットキャプチャ
テキスト処理・ログ解析
テキスト処理の三種の神器
ログ解析の基本ツール。これができないとテストエンジニア失格です!
grep -r "error" /var/log/ # エラーログを再帰検索
sed 's/old/new/g' file.txt # テキスト置換
awk '{print $1}' /var/log/nginx/access.log # 1列目を抽出
実践的ログ解析
現場でよく使う実用的なワンライナーです。
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10 # アクセス数TOP10のIP
awk '$9 == 404 {print $0}' access.log | wc -l # 404エラー件数
実務のコツ:ログ解析スキルは障害対応の効率に直結します。grep/sed/awkの組み合わせをマスターしましょう!
プロセス管理・サービス制御
プロセス管理
暴走プロセスを止めたい時の必須コマンド!
kill -9 PID # プロセスを強制終了
killall nginx # 名前でプロセス終了
pkill -f "python script" # パターンマッチでプロセス終了
pgrep -f nginx # プロセスIDを検索
nohup command & # バックグラウンドで実行
jobs # ジョブ一覧
bg %1 # ジョブをバックグラウンドに
fg %1 # ジョブをフォアグラウンドに
systemdサービス管理
現代Linuxの標準サービス管理方法です。
systemctl start nginx # サービス開始
systemctl stop nginx # サービス停止
systemctl restart nginx # サービス再起動
systemctl reload nginx # 設定再読み込み
systemctl enable nginx # 自動起動有効
systemctl disable nginx # 自動起動無効
systemctl status nginx # サービス状況確認
journalctl -u nginx # サービスログ確認
journalctl -f -u nginx # リアルタイムログ監視
ネットワーク設定・障害対応
ネットワーク設定
ネットワーク情報の確認方法です。
ip addr show # IPアドレス情報
ip route show # ルーティング情報
ip link show # ネットワークインターフェース情報
ifconfig eth0 # 従来のネットワーク設定確認
route -n # ルーティングテーブル
arp -a # ARPテーブル
ネットワーク障害対応
接続問題の切り分けに使う基本コマンドです。
ping -c 4 google.com # 接続確認(4回)
traceroute google.com # 経路確認
mtr google.com # 継続的な経路確認
telnet 192.168.1.1 80 # ポート接続確認
nc -zv 192.168.1.1 80 # ポートスキャン
圧縮・バックアップ
ファイル圧縮
データのバックアップや転送に必須のスキルです。
tar -czf backup.tar.gz /var/www/ # gzip圧縮でアーカイブ作成
tar -xzf backup.tar.gz # アーカイブ展開
tar -tzf backup.tar.gz # アーカイブ内容確認
tar -czf backup-$(date +%Y%m%d).tar.gz /etc/ # 日付付きバックアップ
zip -r backup.zip /var/www/ # ZIP形式で圧縮
unzip backup.zip # ZIP展開
gzip file.txt # 単一ファイル圧縮
gunzip file.txt.gz # 圧縮ファイル展開
データ同期
リモートサーバーとのデータ同期に便利な rsync
コマンド。
rsync -avz /var/www/ user@remote:/backup/ # リモート同期
rsync -avz --delete /var/www/ /backup/ # 削除も同期
rsync -avz --exclude='*.log' /var/www/ /backup/ # ログファイル除外
システムセキュリティ・ユーザー管理
ユーザー管理
システム管理者として知っておくべき基本操作です。
useradd -m -s /bin/bash username # ユーザー作成
usermod -aG sudo username # sudoグループに追加
passwd username # パスワード設定
userdel -r username # ユーザー削除(ホームディレクトリも削除)
id username # ユーザー情報確認
who # ログインユーザー確認
w # 詳細なログインユーザー情報
last # ログイン履歴
セキュリティ監視
不正アクセスの検出に使用するコマンドです。
tail -f /var/log/auth.log # 認証ログのリアルタイム監視
grep "Failed password" /var/log/auth.log # パスワード失敗ログ
grep "sudo" /var/log/auth.log # sudo使用ログ
md5sum file.txt # MD5ハッシュ値計算
sha256sum file.txt # SHA256ハッシュ値計算
高度なコマンドテクニック
コマンド組み合わせ・パイプライン
複数のコマンドを組み合わせた実用的なワンライナーです。
# nginxプロセスを一括終了
ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9
# アクセスログからGETリクエストのIPアドレスTOP10
cat /var/log/nginx/access.log | grep "GET" | awk '{print $1}' | sort | uniq -c | sort -nr | head -10
# エラーを含むログファイルの詳細情報
find /var/log -name "*.log" -exec grep -l "error" {} \; | xargs ls -la
運用自動化スクリプト
日常業務を効率化するシェルスクリプトの例です。
#!/bin/bash
echo "=== システム情報 ===" > system_info.txt
uname -a >> system_info.txt
free -h >> system_info.txt
df -h >> system_info.txt
ip addr show >> system_info.txt
面接でよく聞かれる質問対策
パフォーマンス調査関連
技術面接で頻出のコマンド群です。
uptime # システム稼働時間と負荷
cat /proc/loadavg # 負荷平均値
top -p PID # 特定プロセスの監視
strace -p PID # システムコール追跡
perf top # パフォーマンス分析
ストレージ管理関連
容量問題の対処法を問われることが多いです。
du -ah /var | sort -rh | head -20 # 容量使用量TOP20
find /var -type f -size +100M -exec ls -lh {} \; # 100MB以上のファイル検索
df -h # ディスク使用率
inotifywait -m /var/log/ # ファイル変更監視
実戦シナリオ演習
サーバー障害対応フロー
障害発生時の初動対応コマンドセットです。
uptime && free -h && df -h # システム基本情報確認
ps aux | head -20 # プロセス状況確認
top -n 1 | head -20 # CPU/メモリ使用状況
netstat -tulpn | grep LISTEN # 待機ポート確認
ss -tulpn # より高速なポート確認
tail -50 /var/log/messages # システムログ確認
journalctl -xe # systemdログ確認
Apidog活用シーン:
- 障害対応:APIの応答確認をApidogで実行し、サーバーログと照合
- パフォーマンステスト:Apidogでリクエストを送信し、Linuxコマンドでリソース使用量を監視
- 自動化テスト:Apidogのテスト結果とLinuxログを組み合わせた総合的な品質確認
日常メンテナンススクリプト
定期実行する健康チェックスクリプトの例です。
#!/bin/bash
LOG_FILE="/var/log/health_check.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$DATE] システムヘルスチェック開始" >> $LOG_FILE
# ディスク使用率チェック
DISK_USAGE=$(df -h | grep -E "8[0-9]%|9[0-9]%|100%")
[ ! -z "$DISK_USAGE" ] && echo "[$DATE] 警告:ディスク使用率が高い" >> $LOG_FILE
# メモリ使用率チェック
MEM_USAGE=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')
(( $(echo "$MEM_USAGE > 90" | bc -l) )) && echo "[$DATE] 警告:メモリ使用率が高い:$MEM_USAGE%" >> $LOG_FILE
# システム負荷チェック
LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}' | cut -d, -f1 | tr -d ' ')
(( $(echo "$LOAD_AVG > 2.0" | bc -l) )) && echo "[$DATE] 警告:システム負荷が高い:$LOAD_AVG" >> $LOG_FILE
echo "[$DATE] システムヘルスチェック完了" >> $LOG_FILE
Apidogと連携したLinux運用実践
実践例1:API監視とログ解析
ApidogでAPIの定期監視を行い、異常時にLinuxコマンドでログ解析を実行する運用フローです。
実践例2:パフォーマンステスト
Apidogで負荷テストを実行しながら、Linuxコマンドでリアルタイムにシステムリソースを監視します。
実践例3:自動化テスト環境
Apidogのテスト結果とLinuxのシステムログを組み合わせて、総合的な品質評価を行います。
まとめ
これらのLinuxコマンドをマスターすれば、テストエンジニアとして以下のスキルが身につきます:
- 迅速な問題特定:障害発生時の原因究明が格段に早くなる
- 効率的な運用:日常業務の自動化で生産性向上
- 予防保全:システム監視による障害の未然防止
- セキュアな管理:適切な権限管理でシステムを安全に運用
実践のコツ:
- 実際に手を動かして覚える
- コマンドの仕組みを理解する
- 複数コマンドの組み合わせを習得
- セキュリティを常に意識
- 新しいツールや技術の継続学習
皆さんも是非、これらのコマンドを実際に試してみてください。そして、どんな発見があったか、ぜひコメントで教えてくださいね!一緒にLinuxスキルを向上させていきましょう。