mochieee
8/2/2019 - 6:04 AM

linux command cheatsheet

linux command cheatsheet

テキスト処理

 head   先頭部分を表示
 tail   末尾部分を表示
 grep   指定した検索パータンに一致する行だけ表示
 sort   順番に並べ替える
 uniq   重複した行を取り除く
 tac    逆順に出力
 wc 行数やバイト数を出力
 tr 文字列置換
 diff   差分表示

 sed , awk 
 例
    ファイルサイズの大きい上位5つ表示
    $ du -b /tmp/* | sort -n | tac | head -n 5
  重複行を数える(多い順)
    $ cat ファイル名 | sort -n | uniq -c | sort -rn
  小文字から大文字に変換
    $ cat ファイル名 | tr a-z A-Z
  ファイルへの追記を監視
    $ tail -f ファイル名

フォルダの容量確認

du -sh <フォルダ名>

容量拡張時のOS側操作

※ AWSなど、基盤側での容量拡張を実施した後の手順 参考

# サイズとファイルシステムの使用率確認
df -h
# ファイルシステム(etc.ext4, xfs)の種類を確認
# centos6はext4, centos7はxfsがデフォらしい
# この結果によって、最後のファイルシステムのリサイズ手順が変わる
df -T
# ボリュームサイズとボリュームの親子関係確認
# fdisk -l でも容量は確認可能
lsblk

# このコマンドでも





## 性能調査、プロセスとかサービス確認
    全てのプロセス表示
    $ ps aux
  $ ps auxww
    ジョブ一覧
    $ jobs -l
  ctrl + z でジョブを停止できる。
 ジョブのフォアグラウンドとバックグラウンド
    $ fg %<フォアグラウンドにしたいジョブの番号>
  $ bg %<バックグラウンドにしたいジョブの番号>
 特定のサービスの起動状態確認
    $ systemctl status <サービス名>
 負荷を確認する。サーバーの状態をまるっと見る←これが良い
  $ dstat -af
  他のコマンド
   https://hatebu.me/entry/linuxcommand
 メモリやcpuの状況をリアルタイムにかくに

## ネットワーク
待ち受けているポート番号とプログラムの確認
$ sudo lsof -i -n -P
        下記の例は、プログラム:sshdがポート番号22でリッスンしている状態 を表している↓
        [https://gyazo.com/0436b98dea5dec8c2de9d423cb918a80]
        Centosなど最小構成でインストールしている場合、lsofがインストールされてない場合がある為、適宜手動でインストールする事
リッスンしているポートの確認
$ sudo netstat -ltupn
$ sudo ss -ltupn

## 疎通確認
$ nc -v -w 1 <IP address> -z <port>
※AmazonLinux2やCentOSの場合、ncが使えないため、以下のコマンドを利用する
$ curl -v telnet://<ip address>:80

    IPの確認(CentOS7の場合)
    $ ip a

    NATで使っているパブリックIPを知りたい
    $ curl inet-ip.info

## ファイル操作
    ローカルのファイルをリモート環境に転送
        $ scp -i <ssh接続用の証明書> <ローカルファイルパス> <ユーザー名>@<サーバーのIP>:<保存するパス>
        https://uxmilk.jp/50946
    ファイルの中身に行番号を付けて表示
        $ cat -n ファイル名

    文字コードが原因で文字化けするファイルを開く場合、文字コードを指定してファイルを開く
    $ iconv -f SJIS hoge.txt | less
        * SJISあるいはcp932を指定して開く
  https://qiita.com/wchikarusato/items/7c068078014fcb563e6b

 lessコマンドにおけるファイル内の検索
lessでファイルを開いている際、「/」を入力するとカーソルより下を検索したい文字列を入力できるようになる。 
「?」を入力すると上を検索する。n で次の検索結果に移動する。Nで前の検索結果に移動する

 lessのおすすめオプション
  less -iNM hoge.txt
  起動中にvを押すと、編集モードになる。大抵、vi。
  [知っているようで知らないless https://qiita.com/wchikarusato/items/7c068078014fcb563e6b]

    コピー確認&削除確認
    コピー先に同一ファイルがある場合に確認を促す
    $ cp -i コピー元 コピー先
  本当に削除してよいか確認を促す
    $ rm -i 削除ファイル

    ヘッダ行の位置は固定して中身だけをソート・シャッフルする
    $ cat test.csv | awk 'NR==1;NR>1{print $0|"sort"}'
  https://orebibou.com/2017/06/ターミナル上でヘッダ行の位置は固定して中身だ/

 シンボリックリンク(Windowsの「ショートカット」的な形で利用するもの)の生成
    $ ln -s リンク元 リンク先

    文字化けするファイルをVimで試す場合
    http://www-creators.com/archives/1486

    標準出力しつつ、ファイルにも出力する方法(デバッグログを記録したい時などに有効)
    $ echo "hogehoge" | tee /tmp/hohoge.txt

## ファイル検索
[[ディレクトリツリーからファイルを探す]]
    $ find <探索開始ディレクトリ> <検索条件> <アクション>
    例) カレントディレクトリから 拡張子.txt を探す場合
  $ find . -name '*.txt' -print
    -name で、*や? を使う場合は、上記例のように[* シングルクォート]でくくる。
  -iname オプションを使うと、大文字小文字の区別をしないでファイル名探索できる。

[[複数ファイルから特定の文字列が含まれるファイルを探す]]
    $ find . -type f | xargs grep -nH hogehoge
        -n はファイルがどこで見つかったを示す行番号、-H は引数が1つしかなかったとしてもファイル名を表示する

[[ファイル名データベースからファイルを探す]]
    $ locate <検索したいパスの一部やファイル名など>
 findより高速に検索できる。しかし、標準では用意されてない可能性がある。また、作成したばかりのファイルはデータベースに記録されてない可能性もあるため、作成してからしばらくたったファイルを探すのが良い。
    ワイルドカード(*)を使う場合、[* シングルクォート]でくくる必要がある。
 -b:ファイル名のみを検索対象にする場合
 -i :大文字小文字を区別しない
 -A: 複数条件をAND検索する ※-Aを付けない場合、OR検索になる
    $ locate -A bash doc

## その他
大量ファイルのダミーファイル作成(テストデータ作成)

for count in seq -f "%05g" 10;do dd if=/dev/zero of=dummy$count bs=1k count=1; done


一括処理(xargs)  
 複数ファイルの中から特定の文字列を検索  
 `find . -type f | xargs grep hogehoge`  

MVやCPなど、パスを全部書くのが面倒なとき用の裏技  
`mv /home/hibi/{default,new_file2}.txt`