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 <フォルダ名>
※ 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`