Inoi's blog

新人インフラエンジニアの日々の記録

最近覚えたコマンドまとめ

こんにちは。cloudpackの猪井です。

 

私は今までのほほんとマウスを使ってパソコンを操作していましたから、

CUI(Character User Interface)で操作するのにはまだまだ慣れず、日々覚えることがいっぱいです。

 

今回は最近覚えたコマンドをメモしておこうと思います。

 

pwd  作業中のディレクトリの出力

pwd カレントディレクトリ名を出力する。

 

 cd  カレントディレクトリの変更

cd [   ]   カレントディレクトリを[   ]に変更する。

例)
cd     ホームディレクトリへ移動する。
cd ../ 一つ上のディレクトリへ移動する。
cd     /  ルートディレクトリへ移動する。

 

 mv  ファイルやディレクトリの移動、名前変更

mv  [移動元]  [移動先] 

 

 cp ファイルやディレクトリのコピー

cp [コピー元]  [コピー先]

 

mkdir  新しいディレクトリを作成する。

 mkdir [   ]

 

yum  パッケージを取得してインストール/アップデートする。

yum install [   ]

yum update [   ]

 

ping  ホストとの接続確認

ping [hostname/IP address]

 

wget  ファイルをダウンロード

wget URL  ファイルをFTPサーバーやWebサーバーからダウンロードする。

 

 scp  リモート・マシン間でファイルをコピーする。

scp [ホスト名:ファイル(ディレクトリ)] [ホスト名:ファイル(ディレクトリ)]

     コピー元               コピー先

 

ls  ディレクトリの内容を一覧表示

オプション -l   

ls -l

ファイルのパーミッションの状態など、詳しい情報が見れる。

例)drwxr--r--@ 1 inoi staff 1692 10 20 16:29 black.txt

左端の文字列drwxr--r--の内最初の文字がファイルの型、それ以外の9文字がアクセスパーミッションを表している。

ファイルの型は色々あるが、d(ディレクトリ)と-(通常のファイル)の2つがほとんど。
アクセスパーミッションは、3文字ずつ

[ファイルオーナー(上の例だとinoi)|所属グループ(上の例だとstaff)|その他ユーザー]
に分けて読む。

r:読み取り許可
w:書き込み許可
x:実行許可

を表す。

 

chmod  ファイルやディレクトリのアクセス権の変更

前述のパーミッションを変更できる。
その指定方法には絶対モードとシンボリックモードがあるが、ここでは前者についてのみ説明する。

絶対モードではパーミッションを8進数で指定する。r=4,w=2,z=1としてその和で表現できる。

上の例の
rwx|r—-|r--は、
4+2+1|4+0+0|4+0+0 となり、

chmod 0744 [       ]

のように指定することができる。

viエディタの基本操作

こんにちは。cloudpackの猪井です。

最近はAWSを一から勉強しています。が、サーバーを構築・運用する上でUNIX/Linuxの知識が不可欠ということで、そちらも勉強しています。

 

Linuxでは、コマンドをたくさん覚える必要があります。 テキストファイルの作成・編集にはviというコマンドを使います。

 

これはLinuxを扱う上で基礎の基礎とのことなので、今回はその基本的な使い方をメモしておこうと思います。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 

viには大きく分けると2つのモードがあります。挿入モードコマンドモードです。

 

挿入モード

データの入力は挿入モードで行います。コマンドモードにおいて以下の編集コマンドを入力すると、挿入モードに移ってデータの入力が出来ます。


i  カーソルの前に、文字を挿入

a  カーソルの後に、文字を追加

I  行の先頭の文字の前に文字を挿入

A  行末に文字を追加

o  下に新しい行を挿入

O  上に新しい行を挿入

 

コマンドモード

カーソルの移動や文字や行の削除などは、コマンドモードで行います。挿入モードでEscキーを押すと、コマンドモードに移ります。

 

・カーソルの移動

h  左に移動

j  下に移動

k  上に移動

l  右に移動


0(ゼロ) 行の先頭に移動

^  行の最初の文字へ移動

$  行の最後の文字へ移動

 

H  現在ページの先頭行へ移動

L  現在ページの末尾行へ移動


・文字や行の削除(カット)

x  カーソル位置の1文字を削除

dd  カーソルのある行を削除


・文字列の検索

/  入力した文字列を後ろへ検索する

?  入力した文字列を前へ検索する

 

・コピー&ペースト

yy  現在の行をヤンク(コピー)

p  カーソル位置の後にペースト

P  カーソル位置の前にペースト

 

・ファイルの保存

:w  ファイルの上書き保存

:w filename ファイル名を「filename」にして保存

:w!  書き込み不可のファイルに強制的に上書き保存

 

・viの終了

:q  viを終了する(編集中だとエラーになる)

:q!  viを終了する(編集中でも強制終了)

ZZ(=:wq) ファイルを上書き保存してviを終了する

 

・その他

.  直前の作業を繰り返す

u  直前の操作を取りやめる

Ctrl+r 操作の取りやめのやり直し

 

おまけ(でも重要):ビジュアルモード

viには更に「ビジュアルモード」というものがあります。範囲選択に便利です。

 

v  文字単位のビジュアルモード開始

V  行単位のビジュアルモード開始

 

このモードでカーソルを移動した分だけ、範囲を選択できます。

範囲を選択してyやdを押すと、それぞれヤンク、カットができます。

ビジュアルモードでEscキーを押すと、コマンドモードに移動します。

 

 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


とりあえずはこんなところでしょうか。まずはこのぐらいの範囲で習得していこうと思います。

 

今まで、エディタといえばWindowsのメモ帳くらいしか使っていなかった私にとって、この「モードを切り替える」という概念は非常に取っ付きづらいですね。少しずつ慣れていこうと思います。

 

本当はまだまだもっと便利な機能があるようなので、いずれは使いこなせるようになりたいです。

 

 

 

参考

Vim Cheat Sheet - 日本語

http://archive.linux.or.jp/JF/JFdocs/vi-user-usage.txt

秀丸を10年使い続けた私が、MacVimと出会って困って訊いて調べて… 徒然備忘録 - Qiita

 

Cloud Days Tokyoに参加してきました。

こんにちは。cloudpackの猪井です。

10月15日に、日経BP主催のCloud Days Tokyo 2014 Fallに参加してきました。

 

クラウドサービスを提供している企業がブースを出展して、自社のサービス、導入事例などを来場者に紹介する展示会でした。


(Cloud Days Tokyo 2014 Springの様子→http://expo.nikkeibp.co.jp/cloud/2014spring/report.html)


AWSのパートナー企業はブースが一カ所に集まっていて、そのうちの一つとしてcloudpackもブースを出していました。

運良く各社が入れ替わりセッション講演をするコーナーの隣だったため、、他の企業の講演も聞くことが出来、いい勉強になりました。


私が一番感じたのは、来場者が不特定多数のこのようなイベントだと、出展する企業側の「伝え方」も難しいな、ということでした。

 

来場者の方々のインフラの知識や問題意識には大きなばらつきがあったのでないかと思います。そのどのあたりのレベルに焦点を合わせて自社サービスをプレゼンするかは各社悩んだのではないでしょうか。

 

各社見ていると、素人の私でもなんとなく理解できるプレゼンもありましたし、専門用語が多く正直よくわからなかったプレゼンもありました。

 

まあ私が理解できないのは当然といえば当然なのですが、プレゼンを聞く来場者の方々の表情を見ていても、話についていけてないように見えた方々が多くいました。

 

とりあえずは自社のブースにたくさんの人に来てもらう、というのが各社目指すところなので、やはりプレゼンには技術的な詳細以前に勢いやキャッチーさが求められるのかなと感じました。ブースに来てもらえさえすれば、あとはその方の抱える課題や技術レベルに合った説明をすることが出来ますからね。

ARP

こんにちは。cloudpackの猪井です。今日はARPについてです。

 

ARP

ARP(アープ)とは、IPアドレスからMACアドレスを求めるためのプロトコルです。


コンピュータがデータを送信するとき、送信先のIPアドレスがわかっていてもMACアドレスがわからなければ通信できません。ARPMACアドレスを得る必要があります。

 

ARPリクエスト

どのように調べるのかというと、MACアドレスのブロードキャストアドレスを使ってARPリクエストを行います。

MACアドレスにもブロードキャストアドレスが存在します。すべてのビットが1なので、16進数に直すとFF:FF:FF:FF:FF:FFとなります。

このARPリクエストのパケットの中には送信元(コンピュータA)のIPアドレスMACアドレス、送信先(コンピュータB)のIPアドレスが書いてあります。そしてブロードキャストアドレスによって、同じグループ内のすべてのコンピュータにARPリクエストが送られます。

 

ARPリプライ

指定されたIPアドレスを持つコンピュータBは、コンピュータBのMACアドレス情報を通知するARPリプライをコンピュータAに送ります。
その他のコンピュータはコンピュータAのARPリクエストに応答しません。

これにより、送信元コンピュータAは送信先コンピュータBのMACアドレスを知ることができ、同じLANの中で通信することが出来ます。

 

ARPテーブル

また、このIPアドレスMACアドレスの対応はARPテーブルに保存されます(キャッシュされる)。以降のデータ通信はARPテーブルを参照して送信されます。


ただ、このARPテーブルは定期的にキャッシュがクリアされて書き直しが行われます。

 

 

 

 

グローバルIPアドレスとプライベートIPアドレス

cloudpackの猪井です。

今までIPアドレスについて色々書いてきましたが、IPアドレスには大きく2種類あります。

 グローバルIPアドレスとプライベートIPアドレスです。

 

グローバルIPアドレス

グローバルIPアドレスとは、インターネットに接続された機器に一意に割り当てられるIPアドレスです。決して重複しないように管理されています。

 

プライベートIPアドレス

プライベートアドレスは、会社などの組織のLAN内のコンピュータそれぞれに割り当てられるIPアドレスです。

同ネットワーク内では一意ですが、他のネットワークでは同じプライベートアドレスが使われている可能性があります。


このプライベートIPアドレスだけではインターネット通信を行えないため、インターネット通信を行うには、アドレス変換技術でグローバルIPを持つ機器に中継してもらう必要があります。

 

今回はここまでです。

サブネットマスクとCIDR表記

cloudpack猪井です。今回はCIDR(Classless Inter-Domain Routing)についてみていきます。

 

CIDRとは

この方法では、IPアドレスのネットワーク部とホスト部の境界を8ビット単位に固定せず、サブネットマスクでネットワーク部の長さを決めます。

 

サブネットマスク

サブネットマスクは、IPアドレスと同じく32ビットで表記し、ネットワーク部を全部1、ホスト部を全部0で書きます。

例)

2進数表記だと、 11111111.11111111.11111111.0000
10進数表記だと、255.255.255.240

 

CIDR表記

一般的には、IPアドレスの後ろにスラッシュで区切ってネットワーク部の1の数を書き、サブネットマスクを表す方法が主流になっています。

例えばIPアドレスが135.77.98.32でサブネットマスクが 255.255.255.240のとき、
「135.77.98.35/28」のように表記します。(これをCIDR表記といいます。)

 

どのネットワークに属しているか

サブネットマスクによってネットワーク部が決まり、グループ分けが行われています。
例えば上の例のIPアドレスがどのネットワークに属するかを調べるには、IPアドレスサブネットマスクを2進数に変換してAND演算を行うとわかります。

IPアドレス         10000111 01001101 01100010 00100011  (135.77.98.35)
サブネットマスク      11111111 11111111 11111111 11110000    (255.255.255.240)

ネットワークアドレス 10000111 01001101 01100010 00100000


「135.77.98.32」が ネットワークアドレスで、「135.77.98.35」は、
「135.77.98.32~135.77.98.63」のネットワークに属することが分かります。

 

〜雑感〜

この「サブネットマスクでネットワーク部分/ホスト部分の長さを調整できる」という仕組みはすごく合理的ですね〜。ネットワークにつなぐ必要がある機器の数に合わせて柔軟に割り当てられる。

そのぶん尚更、前エントリの「クラス分け」がとても不便なものに感じられます。1ネットワーク数あたりのホスト数がクラスA、B、Cの16777214,65534,254の三択しかないというのは選択肢が少なすぎますね。

 8ビット(1バイト)で分けるということにそんなに意味があるんでしょうか。よくわかりません。。。

 

 今回はここまでです。

IPアドレスのクラス

cloudpack猪井です。今回はIPアドレスクラスについてです。

 

ネットワーク部とホスト部

IPアドレスの32ビットは、ネットワーク部ホスト部に分けることが出来ます。


ネットワーク部というのはいくらかのエリア(グループ)を表していて、ホスト部というのは、そのグループの中で具体的にどこかということを表しています。 

 

クラス分け

IPアドレスは、クラスA~クラスEのクラスに分かれていて、クラスによってネットワーク部とホスト部の境界が異なります。

 割り振りにはA~Cのクラスが使われています。

 クラスAは、上位8ビットがネットワーク部で、下位24ビットがホスト部。先頭の1ビットが「0」。IPの範囲は0.0.0.0~127.255.255.255

クラスBは、上位16ビットがネットワーク部で、下位16ビットがホスト部。先頭の2ビットが「10」。IPの範囲は128.0.0.0~191.255.255.255。

 クラスCは、上位24ビットがネットワーク部で、下位8ビットがホスト部。先頭の3ビットが「110」。IPの範囲は192.0.0.0~223.255.255

 

ネットワークアドレスとブロードキャストアドレス

IPアドレスホスト部のビットがすべて「0」なのがネットワークアドレスIPアドレスホスト部のビットがすべて「1」なのがブロードキャストアドレスであり、これらはホストに割り当てられません。

 

実際のところは・・・

クラスAは、ネットワーク数は少ないが、1ネットワークあたりのホスト数は多い。
逆に、クラスCはネットワーク数は多いが、1ネットワークあたりのホスト数は少ない。
クラスBはその中間ですね。

しかしこのクラスを用いたIPアドレス割り当てには問題が生じました。ほとんどのネットワークにとってクラスAは大きすぎクラスCは小さすぎたため、割り当ての要求がクラスBに集中したのです。
クラスBの割り当てを受けたネットワークの中にも、ホストを余らせるネットワークが存在し、IPアドレスが無駄になることになりました。

そのため、現在はクラスの考え方を無視したグルーピングが主流となりました。

次のエントリではその方法をみていきます。