Torihaji's Growth Diary

Little by little, no hurry.

インフラエンジニア(私)がよく使うLinuxコマンド

はじめに

みなさん、こんにちは。torihaziです。

今回は普段、業務で触っている Linuxのコマンドについて

紹介していこうと思います。

私が実務で2年間linuxを触り続けてきた中で

最もよく使う形をご紹介します。

マニアックなオプションとかは紹介するつもりはありません。

というか使わなくても仕事は可能です。

ディレクトリ、パス、パーミッション等の言葉がわからない方は

その都度ググりながら来てください。大丈夫。簡単ですよ。

lets go!!

目次


cd

ディレクトリ間を移動することができます。

記法 : cd 移動したいパス

よく使うもの

  • cd ../ 1つ上のディレクトリへ移動することができます。
  • cd - 直前にいたディレクトリへ移動することができます。
  • cd ユーザのホームディレクトリに移動することができます。

例えば今dirにいるとします。

・・・dir1-2に行きたい場合
# cd dir1/dir1-2
# pwd <- 現在いるディレクトリを出力する
/home/hoge/dir/dir1/dir1-1
・・・1つ上に行きたい場合
# cd ../
# pwd
/home/hoge/dir/dir1
・・・1つ直前にいたディレクトリに戻る
# cd -
# pwd
/home/hoge/dir/dir1/dir1-1

pwd

現在いるディレクトリを出力します。(上でさらっと使いましたね。)

記法 : pwd

よく使うもの

なし。pwdだけで機能します。


ls

ファイルやディレクトリの一覧やその情報を出力することができます。

記法 : ls [-オプション] [対象のパス]

よく使うもの

  • ls -l : ファイルやディレクトリの一覧をソートして出力します
  • ls -la : 隠しファイル(.bashrcなど)含めた一覧を出力します
  • ls -ltr: 更新時間が早いものほど下になるように出力されます

先ほどと同じようにdirにいるとします。

# ls -l
drwxr-xr-x 4 hoge hoge 4096 Jan 12 20:43 dir1
drwxr-xr-x 4 hoge hoge 4096 Jan 12 20:45 dir2

ここにはパーミッション、所有者、所有グループ、タイムスタンプ、名称が出力されます。


mkdir

ディレクトリを作成することができます。

記法 : mkdir [-オプション] [ディレクトリ名]

よく使うもの

  • mkdir ディレクトリ名 : カレントディレクトリに指定名で作成する
  • mkdir -p /ディレクトリ/ディレクトリ名 : 違う階層の指定箇所にディレクトリを作成する

※mkdir -p について

mkdir は 未作成のディレクトリ配下に新しく作成することはできません。

そのような場合は mkdir -pとすることで 未作成のディレクトリも合わせて作成できます。

この状態でmkdir dir3/dirをすることはできません。

# mkdir dir3/dir
mkdir: cannot create directory ‘dir3/dir’: No such file or directory
これを防ぐための -p です
# mkdir -p dir3/dir
こうすれば怒られません。

rmdir

空のディレクトリを削除することができます。

記法 rmdir ディレクト

よく使うもの

あまり使いませんね。。空のディレクトリしか削除できません。


cat

ファイルの中身を出力することができます。

記法 : cat ファイル名 [ファイル名] ->複数指定可能

よく使うもの

特になし。


less

何スクロールにもわたるファイルを参照するときに使用します。

cat で表示すると、出力はされるものの一気に出力され切ってしまいます。

そのため「最初の方が見たいのに・」という時はスクロールして戻らないとだめです。

それをせずに1ページずつ自分の好きなタイミングで参照することができるのがlessです。

※同じようなものにmoreがありますが、lessの方が便利です。

記法 : コマンド | less (|はパイプと言います。)

よく使うもの

  • cat テキストファイル | less : テキストファイルの中身を1ページずつ見ることができます。
  • ls - l | less : ls の結果を1ページずつ見ることができます。

tail

テキストファイルの末尾から出力することができます。

例えば末尾10行まで出力したりするといったことが可能です。

記法 : tail [-オプション] テキストファイル

よく使うもの

  • tail -100 /var/log/messages : ログファイルの末尾から100行までを出力できます。
  • tail -f /var/log/messages : ログファイルを開き続け、新しい出力があれば表示しつづけます

※/var/log/messagesは ログファイルが出力され続けるファイルになります。

このファイルをtail -fで参照することによって何か書き込まれるたびに

その書き込まれたデータを出力して参照することができます。

どういうことかと言いますと。

今、ターミナルを2つ上げた状態です

ここで左でtail -f log.txt(<-ファイルなければ適当に作成します)と入力すると

カーソルが下に移動しましたね。ここで右側からlog.txtにechoで書き込んでみます。

こんな形でリアルタイムで内容を出力してくれます。

用途としては/var/log/messages などのような出力され続けるログファイルの中身を

参照し続けたい場合に使用します。


touch

新規ファイルを作成することができます。

記法 : touch ファイル名

よく使うもの

あまり使いません。vim ファイル名 で大抵作ります。


rm

ファイルやディレクトリを削除するコマンドです。

このコマンドについては扱いに注意してください。

記法 : rm [-オプション] ファイル or ディレクト

よく使うもの

  • rm -i ファイル : ファイルを削除する際、削除するか確認できる
  • rm -f *.csv : 拡張子csvがつくものを強制的に削除する

絶対にやらないで。rm -rf *

このコマンドを打つと死にます。

全てのファイル(ディレクトリ配下にファイルがあれば再帰的に)を強制的に削除します。

コマンドが打てなくなります。(コマンドのファイルも削除してしまうので)

やる時は個人のぶっ壊れてもいい環境でやってください。

クビになりたい人はどうぞ!退プロ間違いなしです!!


mv

ファイルやディレクトリの移動、名前の変更をすることができます。

記法1 mv 移動したい元ファイル 移動したい先ファイル

記法2 mv 変更前の名前 変更後の名前

よく使うもの

記法1、2の通りですね。


cp

ファイルやディレクトリのコピーをすることができます。

記法 cp コピーする元 コピー先

よく使うもの

※ちなみにディレクトリコピーするときは-r必須です。


ln

ハードリンク、シンボリックリンクを作成することができます。

ハードリンクはあるファイルAと同じファイルBを作成することができます。

ハードリンクで作成されたファイルBに対して編集するとファイルAにも反映されます。

そういうことができるのがハードリンクです。

一方シンボリックリンクは、ショートカットです。

記法 ln hoge.txt hoge2.txt (ハードリンク)

記法 ln -s hoge.txt hoge2.txt (シンボリックリンク)

よく使うもの

んー、使うことはあまりありません。


find

この子は奥が深いです。検索したり、コマンド実行したり。

使えば使うほど味が深いコマンドです。私も使い切れてはいません。

そのため今日実務で使った使い方を説明します。

記法(例) find / -name ¥*.sh -type f

これは/配下にある拡張子がshファイル(f)を検索することができます。

よく使うもの

(幅が広すぎるので調べて使い倒してください)

今日使ったのはfind ./ -name * type f | xargs sed -i -e 's/hoge/hogeta/g'です。

何をやっているかというと

カレントディレクトリ配下にある全てのファイルを参照し、

それぞれの中身に記載されているhogehogetaに置換するというコマンドです。


chmod

パーミッションを変更することができるコマンドです。

パーミッションとは権限のことですね。これが適切に設定されていないと

ファイルを実行できなかったり参照することができません。

sshの公開鍵を設定するときにお世話になります。もしくは喧嘩するかもしれません。

記法 chmod パーミッション(664など) ファイル or ディレクト

よく使うもの

記法のまんまです。


chown

ファイルもしくはディレクトリの所有者、所有者グループを変更することができます。

こちらもsshの鍵設定の時ですね。優しくしてあげてください。

記法 chown 所有者:所有グループ 対象のファイルなど

よく使うもの

こちらも記法のまんまですね。


ps

現在稼働しているプロセスを確認することができます。

こちらはオプションが豊富にありますが、よく使うものは-efです。

現場では覚えている人は少ないです。こういうもの、みたいな理解の人が多いです。

記法 ps [オプション]

よく使うもの

  • ps -ef | grep hoge : 全ユーザのプロセスを省略せずに出力し、hogeという文字がある行のみ表示

kill

殺すコマンドです。kill you です。

嘘です。プロセスにシグナルを送信するコマンドです。

シグナルを送信すると、強制終了させたり中断させたりすることができます。

よくプロセスを殺すと言いますがそれはそのプロセスを強制終了させることを言います。

記法 kill [-オプション] プロセスID

よく使うもの

  • kill -9 12345 : プロセスID 12345 のプロセスを強制終了させます。

grep

指定した文字列がある行のみを表示するもしくは表示しないようにすることができます。

記法 grep [オプション] ファイル もしくはディレクト

よく使うもの

-ps -ef | grep hoge| grep -v grep : psの結果からhogeのある行のみを出力します。

-vをすることで 指定した文字が表示されている行以外を出力することができます。

こんなことして意味あるのかと思うかと思います。

-vをしないと出力が邪魔になる時があります。

例えば今test.shというプロセスが動いているとします。

それがちゃんと動いているか確認する方法は下記です。

# ps -ef | grep test
laraweb     4893    4778  0 22:56 pts/1    00:00:00 sh test.sh
laraweb     4896    4778  0 22:56 pts/1    00:00:00 grep --color=auto test

これでもいいんですけど 2行めの grepが邪魔ですね。

これはこの今検索のために使用したgrep自身です。

それを防ぐために次のコマンドを実施します。
# ps -ef | grep test | grep -v grep
laraweb     4893    4778  0 22:56 pts/1    00:00:00 sh test.sh

echo

文字列を標準出力に出します。

リダイレクトして使用することが多いです。

記法 echo 文字列

よく使うもの

  • echo hoge > hoge.txt : hogeという文字列を hoge.txtというファイルに出力する

ssh

リモートホストssh で接続することができます。

記法 ssh [オプション] user@接続先IP or ホスト名

よく使うもの

-ssh -i 秘密鍵ファイルパス user@接続先IP: 秘密鍵を指定して接続することができます。

終わりに

いかがだったでしょうか。

今のところ思いつくのはこのくらいです。

あとはvim等がありますが、以前他の記事で紹介しているので

そちらも参考にされてみてください。

ただこれでもまだまだ少ないです。

本格的にサーバを運用するためにはfirewall-cmdとかもあるので

興味がある方は調べてみてください。

自分も完全未経験な人間だったので、頑張って勉強してみてください

応援しています。私も勉強頑張ります。