エンジニア必須のLinuxコマンド:なぜ今でもCLIスキルが重要か
クラウド時代においても、LinuxのCLI(コマンドラインインターフェース)スキルはエンジニアの必須スキルです。AWS・GCP・AzureのサーバーはほぼLinuxベースで、Docker・Kubernetes・CI/CDパイプラインの操作も全てコマンドラインから行います。本記事では現場で毎日使う実践的なLinuxコマンドを厳選して解説します。
ファイル操作の基本コマンド
# ディレクトリ操作
ls -la # ファイル一覧を詳細表示(隠しファイルも)
ls -lh # ファイルサイズを人間が読みやすい形式で表示
cd ~/projects # ホームディレクトリのprojectsへ移動
pwd # 現在のディレクトリを表示
mkdir -p /tmp/test/sub # 中間ディレクトリも含めて作成
# ファイルコピー・移動・削除
cp -r source/ dest/ # ディレクトリを再帰的にコピー
mv old-name new-name # ファイル名変更・移動
rm -rf directory/ # ディレクトリを強制削除(注意!)
find . -name "*.log" -delete # 拡張子でファイルを検索して削除
# ファイル内容の確認
cat file.txt # ファイル内容を表示
less large-file.log # ページャーで大きなファイルを表示
tail -f /var/log/app.log # ログをリアルタイム追尾
head -n 20 file.txt # 先頭20行を表示
wc -l file.txt # 行数をカウント
テキスト処理:grep・sed・awk
# grep: テキスト検索
grep -r "ERROR" /var/log/ # ディレクトリを再帰検索
grep -n "function" app.py # 行番号付きで検索
grep -v "DEBUG" app.log # 一致しない行を表示(除外)
grep -E "(ERROR|WARN)" app.log # 正規表現で検索
ps aux | grep nginx # プロセスリストからnginxを検索
# sed: ストリームエディタ(置換)
sed "s/old/new/g" file.txt # oldをnewに全置換
sed -i "s/localhost/prod-db/g" config.yml # ファイルを直接編集
sed -n "10,20p" file.txt # 10〜20行目だけ表示
# awk: テキスト処理言語
awk "{print $1, $3}" access.log # 1列目と3列目を表示
awk -F: "{print $1}" /etc/passwd # :区切りで1列目表示
awk "NR==5{print}" file.txt # 5行目だけ表示
awk "{sum += $1} END {print sum}" numbers.txt # 数値の合計
プロセス・システム管理
# プロセス管理
ps aux # 全プロセスを表示
ps aux | grep node # Nodeプロセスを検索
kill -9 PID # プロセスを強制終了
killall nginx # プロセス名で終了
top # リアルタイムでプロセス監視
htop # topの高機能版(要インストール)
# バックグラウンド実行
nohup ./server.sh & # バックグラウンドで実行(ログアウト後も継続)
disown %1 # バックグラウンドジョブをシェルから切り離す
screen -S session-name # screenセッションを作成
tmux new -s main # tmuxセッションを作成
# システムリソース確認
df -h # ディスク使用量
du -sh /var/log/* # ディレクトリサイズ
free -h # メモリ使用量
uname -a # Linuxカーネル情報
uptime # システム稼働時間・負荷平均
ネットワークコマンド
# ネットワーク確認・診断
ip addr # IPアドレス確認(ifconfigの代替)
ss -tuln # 待受ポート確認(netstatの代替)
ping 8.8.8.8 # 疎通確認
traceroute google.com # 経路確認
curl -I https://example.com # HTTPヘッダーを確認
curl -X POST -H "Content-Type: application/json" \
-d "{"key":"value"}" https://api.example.com/endpoint
# ファイル転送
scp file.txt user@server:/path/ # リモートへファイル転送
rsync -avz --progress source/ user@server:/dest/ # 差分同期
wget https://example.com/file.zip # ファイルダウンロード
# SSH
ssh -i key.pem user@server-ip # キーファイルでSSH接続
ssh -L 3306:localhost:3306 user@server # ローカルポートフォワード
ssh-keygen -t ed25519 -C "your@email.com" # SSH鍵生成
シェルスクリプト:自動化の基本
#!/bin/bash
# 本番デプロイスクリプトの例
set -e # エラー時に即座に終了
APP_DIR="/var/www/app"
BACKUP_DIR="/var/backups/app"
DATE=$(date +%Y%m%d_%H%M%S)
echo "=== デプロイ開始: $DATE ==="
# バックアップ
echo "バックアップ中..."
mkdir -p $BACKUP_DIR
cp -r $APP_DIR $BACKUP_DIR/app_$DATE
# リポジトリの更新
cd $APP_DIR
git pull origin main
# 依存関係のインストール
npm ci --only=production
# ビルド
npm run build
# サービス再起動
systemctl restart my-app
# ヘルスチェック
for i in {1..5}; do
if curl -s http://localhost:3000/health | grep -q "ok"; then
echo "デプロイ成功!"
exit 0
fi
echo "リトライ $i/5..."
sleep 5
done
echo "エラー:ヘルスチェック失敗"
exit 1
Vimの基本操作(知っておくべき最低限)
# Vim起動
vim filename.txt
# 基本操作
# i 挿入モード開始
# Esc ノーマルモードに戻る
# :w 保存
# :q 終了
# :wq 保存して終了
# :q! 変更を破棄して強制終了
# 移動
# h/j/k/l 左/下/上/右
# gg ファイル先頭
# G ファイル末尾
# /keyword 前方検索
# n/N 次/前の検索結果
# 編集
# dd 行を削除(切り取り)
# yy 行をコピー
# p 貼り付け
# u アンドゥ
# Ctrl+r リドゥ
まとめ
本記事で紹介したLinuxコマンドは現場で毎日使うものばかりです。まずはファイル操作・grep・プロセス管理・SSHの基本をしっかりマスターし、シェルスクリプトで作業を自動化できるようになると、開発効率が大幅に向上します。毎日少しずつコマンドを使っていくことで自然と身についていきます。