3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxコマンドライン操作テクニック

Last updated at Posted at 2018-06-17

Linuxを使い始めたけど、コマンドの種類もオプションも豊富過ぎてどういう場面でどんな組み合わせを使えばいいのかわからない、そんな方少なくないと思います。

自身の頭の中を整理する目的も兼ねてまとめてみましたのでご活用ください。

■ターゲット
・Linux初心者
・LPICは持ってるけど実務経験に乏しい
・単純オペレーションがメイン
・これからSREとか高度な運用をやっていきたい
・普段は必要になるたびに調べながら使ってるけど、空で出てこない

■基本テクニック
 ログイン、ユーザ変更、ディレクトリ移動した場合は直後に確認する
 コンフィグファイルを変更する前にバックアップをとる

ログイン確認(ホスト名とユーザ名)
 uname -n;id -un

カレントディレクトリ配下のファイルを詳細表示する
 ls -l
  -l:詳細表示
 ll
  ・・・ls -lの省略コマンド、aliasでデフォルト設定されている
 ls -ltr
  ・・・タイムスタンプが古いものを先頭に新しいものを末尾に表示する、変更したファイルなどを探すのに便利

ディスク配下のファイルをサイズが小さい順に並べる
du -sh | sort
 ・・・ディスク使用率の逼迫時などの確認時に使う

現在のディレクトリを確認する
 pwd
  ・・・Print Working Directoryの略らしい

年月日を自動で付けたバックアップをとる
 cp -ip ファイル名{,_`date +%Y%m%d`}
  -i:コピー先ファイルが存在する場合は上書きするか確認する
  -p:権限やオーナ情報やタイムスタンプもそのままとる

cronのバックアップを取る
 crontab -l > ファイル名_`date +%Y%m%d`}

他ユーザのcron設定を確認する
 cat /etc/crontab/ユーザ名
  ・・・全サーバのすべてのCron設定を確認する場合などに使う

バックアップファイルとの差分を取る
 diff -u ファイル名{,_`date +%Y%m%d`}
  ・・・大抵は-uオプションのほうが見やすいが、場合によっては付けないほうが良い場合もある。

出力結果とファイルとで差分を取る
 cat HOGE.log | diff ファイル名 -
  ・・・HOGE.logのcat結果と指定ファイルの中身を比較する

2つの出力結果をファイルに書き込まずに差分を取る
 diff (cat HOGE.log) (cat FUGA.log)
  ・・・標準出力結果同士を比較している

1つ上のディレクトリに移動する
 cd ../

2つ上のディレクトリに移動する
 cd ../../

ディレクトリ移動する前のディレクトリに戻る
 cd -

文字列置換
 sed -e 's/HOGE/FUGA/g' ファイル名
  ・・・・ファイル名の中のHOGE文字列をFUGA文字列に置換する
viコマンド
 行番号を表示する
  :set number
 検索する
  /検索文字列
   2個目以降を探す場合は[n]を押す
   前方を探す場合は[N]を押す
 置換する
  :%s/HOGE/FUGA/g
 置換する前の確認をする
  :%s/HOGE/FUGA/gc

lessコマンド
 moreの強化版、viと同様のコマンドが使える、tailやheadのように使うことも出来る

zip圧縮ファイルの中身を見る
  zless
    ・・・lessと同じ使い勝手
  zcat
    ・・・パイプでheadやtailしてログのタイムスタンプ確認などに使う

■応用テクニック
ワンラインでssh,su,任意のコマンド複数を実行する。
ssh example_host "su -c 'uname -n;id -un;tail -100 /var/log/messages' -"

複数条件のgrep
egrep -e 'HOGE|FUGA' -v 'GEFU|FUGE' FILE.dat
 ・・・HOGEもしくはFUGAを含み、かつGEFUもしくはFUGEを含まない

ログファイルから特定の意味を示す文字列のみを取り出す
cut -d "(" -f 2 FILE.dat | cut -d ")" -f 1
 ・・・()で囲われた文字列データを取り出す
   例:aaaaa(host1)bbbbbb   →host1
     ccccccccc(host2)dddddd →host2
     eee(host3)fff      →host3

ログファイルから特定の条件を満たす文字列を絞り込み、さらに特定の意味を示す文字列のみ取り出す
egrep -e '^"Apr 10 12:15:"|2018' | cut -d " " -f 3 | cut -d " " -f 1

while sleep 60; do ps -ef | grep http | wc -l ; done
 ・・・1分ごとにhttpプロセスの数をカウントし続ける

■障害対応時の確認ポイントなど
FTPのエラーが出たので調べる
 tail -500 /var/log/xferlog
  ・・・FTPログを探る(proftpdの場合)
 tail -500 /var/log/messages
SCPやSFTPなどSSHを利用したサービスのエラーを調べる
 tail -500 /var/log/secure
  ・・・SSH通信を通したか弾いたかを探る
 tail -500 /var/log/messages
FWなどを通過してサーバまで来ているはずなのに通信できないので調べる
 less /etc/host.allow
 less /etc/host.deny
  ・・・TCPWrapperで制限がかかっている可能性を探る
     IPやサービス/ポート指定を忘れていたりしないか。
     
ntpの同期が上手くいかないので調べて復旧させる(ntp的上位サーバから対応する)
 /usr/sbin/ntpq -p
  ・・・状態確認。特にoffset値が時刻ズレを意味している。
 less /etc/ntp.conf
  ・・・上位の時刻同期先を確認する
 ntpdate -u ntp1.jst.mfeed.ad.jp
  ・・・上位の時刻同期先を指定して強制的に時刻同期する
 systemctl status ntpd
  ・・・ntpdのステータス確認
 systemctl restart ntpd
  ・・・ntpdの再起動

随時書き足していきます。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?