Shintaro's Laboratory

SEの徒然日誌です。気ままに更新していきます。

障害対応でよく使うコマンド

障害対応時は時間的リミットによる焦りから冷静なコマンド検索ができず、必要なオプション等が見つからないことがある。またそもそもコマンドの存在を知らない・忘れている場合は、検索する術もない状態となってしまう。

 

インフラ系のエンジニアの方がまとめているサイトはいくつか見られたが、アプリ系・業務系のエンジニア向けのサイトがあまりないため、経験上よく使用するコマンド一覧を整理しておく。

 

■フォルダ移動

〇cd フォルダ名

おなじみのコマンド。解説は省略する。

〇ドライブ:(例d:)

windowsサーバで運用している場合に、他のドライブに移動する。

 

■ログ確認

〇ls -ltr ファイル名([a-b0-1]などで正規表現を利用可能。この場合はa~bまたは0~1)

ファイル名を表示するのがlsコマンド。lオプションは詳細、trで更新日が最新のものを一番下に表示する。最後に異常終了したものが一番ターミナルの下に出る方が便利なので、逆順で表示させる。

〇cat ファイル名

ファイルの中身を表示する。

 

■ファイルの退避・作成・削除

〇mkdir -p ディレクトリ名

ファイルを退避する用などにwrkフォルダを作成することがある。その際にディレクトリを作成できる。pオプションにより、パスで指定した場合も途中にそのフォルダがなければフォルダを作成できる。

〇cp -p 対象ファイル名 コピー先

本番ファイルなどをwrkフォルダに退避する際などに利用する。pオプションで属性も保持できるので必ずつける。

〇diff -s 対象ファイル① 対象ファイル②

ファイル間の差分を確認する。sオプションを同一の場合も同一である旨を表示してくれるため、コマンドの誤動作と区別ができる。

〇touch ファイル名(中身を入れたい時は、echo "文字列">ファイル名とする。)

ゼロバイトファイルを作成するときに利用する。

〇mv 元ファイル名 変更後ファイル名

リネームする際に利用する。コピーコマンドでも問題なし。

〇rm -i ファイル名(ディレクトリの際は、rm -ir ディレクトリ名)

ファイルやディレクトリを削除する際に利用する。削除は危険なコマンドであるため、必ずiオプションをつけ削除前に確認できるようにする。

〇tar -zcvf 圧縮ファイル名.gz 対象ファイル名(正規表現や*を利用する) --remove-files

大量ファイルを一度に削除したい場合は、tarで固めると便利である。念のためgz圧縮してローカルにバックアップしてから削除する。(--remove-filesを指定すると、tarで固めた後は該当ファイルを削除してくれる。)

 

■ファイル編集(vi)

〇[escキー]+:wq

保存して閉じる。

〇[escキー]+:q!

保存しないで閉じる。

〇h(左),l(右),j(下),k(上)

括弧に記載の方向へカーソルを移動する。

〇o

カーソルの下の行にテキスト追加。

〇a

カーソルの右にテキスト追加。

〇x

カーソルの文字削除。

〇数字+dd

数字で指定した行を削除。大量の行を削除するときに重宝。

〇/文字列

文字列を検索する。

〇:g/検索文字列/s//置換文字列/gc

文字列を置換する。cをつけているので、都度確認可能。

〇:set list(:set nolistで非表示。windowsの改行コードが^Mにならなければ、:e ++ff=unixも実施する)

改行コードを表示。

 

文字コード・改行コード

〇file ファイル名

文字コードとファイル形式表示。

nkf --guess ファイル名

改行コードを表示。

sed 's/$/\r/g' 対象ファイル名 > 一時的なファイル名

LF(linux)からCRLF(windows)の改行コードへ変更する。一時的なファイル名に吐き出し、ワークから本番ディレクトリに戻すときにファイル名を変更する。

sed 's/\r//g' 対象ファイル名 > 一時的なファイル名

CRLF(windows)からLF(linux)へ改行コードを変更する。

 

■ファイル検索

grep -r 文字列 検索対象

検索対象の文字列を検索対象の中で検索する。rをつけることで、サブディレクトリも検索できる。

grep -rL 文字列 検索対象

検索文字列が合致しないファイル一覧を作成。

 

■圧縮ファイルの操作

〇tar -zcvf 圧縮後ファイル名.gz 対象

対象を圧縮する。

〇tar -zxvf 対象ファイル.gz

対象を解凍する。

〇zcat ファイル名(もしくは、tar -zxOf ファイル名)

解凍せずに、中身を表示。

 

■サーバの容量確認

〇df -h ディレクト

該当ディレクトリの容量を表示。空き容量不足でファイルが書き込めないときなどに使う。

 

■ファイル転送障害

ping 宛先 -c4

4回pingを送る。

ftp→open 宛先→bin(バイナリモード)→passive(デフォルトはパッシブモードなので、アクティブモードへ変更)

アクティブモード、かつバイナリで転送することが多いので、該当の設定にしてから対象ファイルの有無やput/getを行う。

 

■プロセス障害

〇ps aux | head -1

プロセスコマンドのヘッダを確認しておく。次のコマンドを打つ際、プロセスID等を間違えないようにする効果がある。

〇ps aux | grep サービス名

特定のサービスのプロセスIDを特定する。ハングアップ等でよく利用する。

〇kill プロセスID

特定のプロセスを強制停止させる。

 

今回は、障害対応で利用頻度の高いコマンドを整理してみました。

ほかにもよく使うコマンドがあれば、ぜひコメントください。