October 08, 2020
先日、このようなツイートをしました。
未経験でSESに入って、何も分からない状態。とりあえずLinuxは開発でもインフラでも使うから、LPIC(今はLinuCかな)のレベル1を勉強しておくといい。コマンドとか網羅的に触れるし、解説も付いているから。資格も案外バカにできないなと。
— katsuya | 元SESのインフラエンジニア (@katsuya71109608) October 5, 2020
資格を1つの勉強方針にすることをオススメしました。
が、このLPICレベル1の資格、コマンドがたくさんでてきます。
僕が勉強していた当時、
「これ、ずっと覚えておくの無理じゃない??」
「どれがよく使うコマンドなの??」
と思っていました。
たぶんこれから勉強する未経験の方も感じると思います。
そこで、今回は、「実際の現場でよく使うコマンド」をエンジニア歴6年の経験を踏まえて、紹介したいと思います。
目次
頻繁に使用するコマンドを紹介します。サーバにログインした時に、これらのコマンドを使わないことはないんじゃないか?ってぐらい使います。
どうでしょうか?
書いていて思いましたが、めっちゃ基礎的なコマンドばかりになりました。基礎が大事ってことなんですかね。
よく使用するオプションと共に解説します。
ディレクトリを移動するコマンド。
「オプションなんて無いだろう。」と思っていましたが、ありました。。残念ながら自分は1回も使ったことがないです。。
$ cd /var/tmp
ファイル名の一覧を確認するコマンド。
オプション無しで使うことは、ほとんどありません。よく使うのは3パターン。
# ファイルの詳細情報(※)を確認する時に使う。
# ※ ファイル名/作成日時/更新日時/所有者/所有グループ
$ ls -l
# 「ls -l」の短縮形(aliasとも言う)。これは正式なコマンドではないのですが、最近のOSだと短縮系としてデフォルトで設定されていたりします。
$ ll
# ファイルの詳細情報 + 隠しファイル を表示します。
# ※ Linuxではファイル名の先頭が「.(ドット」で始まるファイルを隠しファイルと言います。隠しファイルはlsコマンドだけでは表示されません。
$ ls -la
ファイルの権限を変更するコマンド。
# 「+x」のように文字でも権限が指定できます。僕は、変更後の権限が明確に分かるように数字で指定することが多いです。
$ chmod 755 sample.sh
# たまに使う。
# ディレクトリ毎(ディレクトリに含まれるファイルも含む)、権限を変更する。一時的な作業用のディレクトリとかによく使います。
$ chmod 644 -R /var/tmp/sample
ファイルの所有者を変更するコマンド。
# 特定ファイルの所有者と所有グループを変更する。
# 「所有者:所有グループ」の形式で指定する。
$ chown root:root sample.sh
# たまに使う。
# ディレクトリ毎(ディレクトリに含まれるファイルも含む)、所有者を変更する。
$ chown root:root -R /var/tmp/sample
ファイルやディレクトリをコピーするためのコマンド。
# これは個人差があるかもしれませんが、僕はこのパターンを1番使います。「-p」を使うことで、所有者や権限も含めてまるっとコピーすることができます。所有者が意図しないものに変更されることを防げます。
$ cp -p /var/tmp/sample.sh /tmp/
# たまに使う。
# ディレクトリ毎コピーしたい場合に「-r」を使用する。また、所有者と権限も変わらないように「-p」も合わせて使う。
$ cp -pr /var/tmp/sample /tmp
ファイルやディレクトリを移動させるコマンド。オプションは使ったことがありません。。
$ mv /var/tmp/sample /tmp/
ファイルやディレクトリを削除するコマンド。
# オプション無しだと削除する際「yes or no」を聞かれる。これが面倒なので、「-f」で強制的に削除することができる。
# ただ、強制的に削除されてしまうため、慎重に!(これを禁止している現場もあります。)
$ rm -f sample.sh
# たまに使う。フォルダ毎削除するために「-r」オプションを使う。
$ rm -fr sample
ファイルの中身を表示するコマンド。
# 単純にファイルの中身を見たい時に使う。ただ、長い行数を表示してしまうとスクロールが大変なので、サイズが大きいファイルに対してはあまり使いません。
$ cat sample.sh
# 行番号を付けて表示する。
$ cat -n sample.sh
ファイルの中身をキーワードでフィルタリングしたい場合に使用する。
# どちらでも同じ結果になるんですけど、僕自身は癖で「cat~」の方を使用することが多いです。
$ cat sample.sh | grep hellow
$ grep hellow sample.sh
# 拡張正規表現を利用してキーワード検索する。拡張正規表現で使用できる正規表現は覚えていないので、毎回ググっています。
$ grep -E "*hellow" sample.sh
# 特定のキーワードを除外して表示させる。この例では、「# コメント」のようなコメント以外の行を表示させます。
$ cat sample.sh | grep -v "^#"
# 復数ファイルからキーワード検索したい場合に使用する。該当するキーワードがある場合、ファイル名と該当行が表示される。
# 僕は、設定ファイルが復数あって、「特定の設定項目がどのファイルに記載せれていたっけ?」みたいな時に使用します。
$ grep hellow /var/tmp/sample/*
結果の例:
/var/tmp/sample/hellow.txt:hellow
/var/tmp/sample/world.txt:hellow
特定のファイルを検索したりする時に使用する。
# このパターン以外は、ほとんど使用しません。
# ファイル名は分かるけど、どこに置いてあったっけ?みたいな時に使用することが多いです。
# 例だと「/(ルート≒サーバ内の全てが対象)」から、「-name sample」sampleという名前を含み、タイプがファイル(-type f)
$ find / -name sample -type f
シンボリックリンク(Windowsで言うショートカットのようなもの)を作成する時に使用する。
# 「/var/tmp/sample.sh」のシンボリックリンク(≒ショートカット)を「/tmp/sample.sh」として作成する。
$ ln -s /var/tmp/sample.sh /tmp/sample.sh
ファイルの末尾を表示するコマンド。
# 末尾を表示させ続けることで、ファイルの更新をリアルタイムに見ていくことが可能。
# アプリのデバッグをする時に、ログファイルをtailして、リクエストの結果を確認する。みたいな使い方がほとんど。
$ tail -f /var/log/messages
# 末尾から指定した行数を表示させる。
# この例だと20行表示させる。
$ tail -20 /var/log/messages
サービスの起動/停止/状態確認を行うコマンド。「Nginxを起動させたい!」みたいな時に使う。
RedHat7系(CentOSも)で使用するコマンドになるため、RedHat8系だとdnfに変更されていたりするので注意!
# サービスの状態確認を行う。
$ systemctl status nginx
# サービスの起動/停止を行う。
$ systemctl [start or stop] nginx
# サービスの自動起動設定をする。
$ systemctl [enable or disable] nginx
# サービスの一覧を確認する。
$ systemctl list-unit-files -t service
vimの閲覧モード(編集することができない)。「ファイルの内容をVimで確認したいが、絶対に変更したくない!」時に使用することが多いです。
システムのメモリ使用状況を確認するコマンド。
# 「-h」を付与することで読みやすい単位で表示してくれる。
$ free -h
システムのリソース状況を確認するコマンド。メモリやCPUの使用率をプロセス別に確認できたりする便利なコマンド。topを実行するとリソース状況を確認する画面に入るのですが、ここから色々コマンド(メモリ使用順に並び替えたり)があるのですが、正直覚えていません。。その都度、ググれば大丈夫かなと。
以上、実際に業務でよく使用するコマンドの紹介でした。
是非、参考にしてみてください。
(思い出したら都度追加していきます!)