20201113のLinuxに関する記事は5件です。

Linux,conda,ssh,git 関連個人的メモ

Linux,conda,ssh,git 関連個人的メモ

あまりにも技術力がなさすぎてあらゆる媒体で僕の知識不足が露呈しました。
自分が調べたそれぞれの基礎コマンドをまとめました。基本的には僕のメモ代わりなので、詳細な説明はありません。
随時追加していきます。

ssh関連

ssh起動方法
$ ssh [ユーザー名]@[ipアドレス]

ipアドレスは172.16. で続くアレ

Linux関連

ディレクトリの移動
$ cd ディレクトリ名
前のディレクトリ戻る
$ cd ..
ディレクトリ内のファイル表示
$ ls
ファイル削除
$ rm ファイル名 
ディレクトリ削除
$ rm -r ディレクトリ名

簡単にディレクトリが消せたらまずいから特殊なコマンドが必要なのかもしれない

ディレクトリ作成
$ mkdir ディレクトリ名
ディレクトリ指定諸々
$ ./  # カレントディレクトリ
$ ../ # 親ディレクトリ
$ /   # 最上位、の意味のルート

conda関連

condaのコマンドで、-eや-nという条件を追記するときがあるが、これは省略表記。
--env 、--name ともそれぞれ書くことができる。

conda環境確認
$ conda info -e
conda環境作成
$ conda create -n 環境名
conda環境削除
$ conda remove -n 環境名 -all
conda環境起動
$ conda activate 環境名
conda環境閉じる
$ conda deactivate
ライブラリインストール
$ pip install ライブラリ名

ライブラリ名の後に==を入れればバージョンを指定できる
例えばこんな感じ

$ pip install pandas==0.19.2

git関連

gitのクローン作製
$  git clone https://github.com/ユーザー名/git名(?).git

参考文献

【初心者向け】Anacondaで仮想環境を作ってみる
[Python]Anacondaで仮想環境を作る

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWSのEBSの再確認

はじめに

今更ですがAWSの基礎の学習をしています。今回は普段(というか今まで全く)気にしていなかった、EBSの動作の再確認をしました。

やること

  • ボリュームをインスタンスにアタッチして、そのボリュームを他のインスタンスに再アタッチしてちゃんとデータが残っていることを確認する。
  • ストレージと言えばS3ばかりだったが、ローカルボリューム(EBS)も保存領域といういみでは使えるということの再確認。

作業の流れ

  1. ebsの作成
  2. ebsをインスタンスAにアタッチ
  3. インスタンスAで、ebsにファイルを作成(hoge.txt)
  4. インスタンスBに、ebsを再アタッチ
  5. インスタンスBで、ebs内を確認してhoge.txtがあるかを確認

1. ebsの作成

ボリューム | EC2 Management Console 0002-11-13 12-23-01.png

test-ebsを作成しました。4Gで作成をしました。HDDでも、SSDでも何でも大丈夫です。

2. ebsをインスタンスAにアタッチ

ボリューム | EC2 Management Console 0002-11-13 12-25-30.png

ボリューム | EC2 Management Console 0002-11-13 12-26-28.png

インスタンスAにアタッチしました。

ボリュームがアタッチされているか確認。インスタンスAにsshします。

Last login: Fri Nov 13 03:16:54 UTC 2020 on pts/0
[root@ip-xxx-xxx-xxx-xxx ~]# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0   8G  0 disk
└─xvda1 202:1    0   8G  0 part /
xvdf    202:80   0   4G  0 disk

xvdfという名前で、4Gがアタッチされていることが確認できました。このデバイスファイルは、/dev/xvdfに存在します。

3. インスタンスAで、ebsにファイルを作成(hoge.txt)

ファイルシステムをlinux用にフォーマットします。

[root@ip-xxx-xxx-xxx-xxx ~]# mke2fs /dev/xvdf
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
52428 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

これでLinuxファイルシステムにマウントができる形になりました。

/mntにマウントします。

[root@ip-xxx-xxx-xxx-xxx ~]# mount /dev/xvdf /mnt
[root@ip-xxx-xxx-xxx-xxx ~]# ls /mnt/
lost+found

マウントされたことが確認できました。

このボリュームの中にファイルを作成します。

[root@ip-xxx-xxx-xxx-xxx ~]# ce /mnt
[root@ip-xxx-xxx-xxx-xxx mnt]# echo hoge > hoge.txt
[root@ip-xxx-xxx-xxx-xxx mnt]# cat hoge.txt
hoge

作成して中身にhogeと記入しました。

4. インスタンスBに、ebsを再アタッチ

まずは、インスタンスAのボリュームをアンマウントします。

[root@ip-172-31-27-44 ~]# ls /mnt/
hoge.txt  lost+found

[root@ip-172-31-27-44 ~]# umount /mnt
[root@ip-172-31-27-44 ~]# ls /mnt/
[root@ip-172-31-27-44 ~]#

umountしたので、/mntの中身は空になっています。

AWSコンソール上でデタッチします。

ボリューム | EC2 Management Console 0002-11-13 12-39-07.png

インスタンスAの時と同じやり方で、ebsをサーバーBにアタッチします。

5. インスタンスBで、ebs内を確認してhoge.txtがあるかを確認

インスタンスBにsshして確認をして、ボリューがアタッチされているかを確認します。

yokohama@ip-yyy-yyy-yyy-yyy [12:41:29 PM] [~] [master *]
-> % lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  64G  0 disk
└─xvda1 202:1    0  64G  0 part /
xvdf    202:80   0   4G  0 disk

4Gのやつがされています。デバイスファイル名は、xvdfでした。マウントして中身を確認します。

[root@ip-yyyy-yyyy-yyyy]~# mount /dev/xvdf /mnt

[root@ip-yyyy-yyyy-yyyy]~# ls /mnt
hoge.txt  lost+found

[root@ip-yyyy-yyyy-yyyy]~# cat /mnt/hoge.txt
hoge

マウントしたebsの中には、hoge.txtが存在しており、中身もちゃんと保存されていることが確認できました。

まとめ

使い所は色々とありそうですが、このようにebs内のデータが永続的に保存されていることの確認ができました。

ちなみにこのボリュームを複数のec2にアタッチできたら便利だなと思いましたが、AWSコンソール上でのメニューを確認する限りでは、できないようでした。

あらためて感じますが、20年ぐらい前までは物理的なハードディスクをマザーボードに追加してファイルシステムのフォーマットしてマウントしてましたが、エラスティックな時代だな〜

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

seq コマンド

seqコマンドについて学習したので、記事にします。

数値を出力する

【コマンド例】

seq 10

1から10までの数値を出力する

seq -w

先頭を0で埋めて桁数を揃える

seq 5 10

開始する数値と終了する数値を指定して出力する

seq 1 2 10

1から10までの数値を2ずつ増やしながら出力する

seq -s x 10

数値に区切りを入れる
キャプチャ.PNG

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ディレクトを掘っていき、ディレクトリパス+ファイル名の一覧を作成する

ディレクトリ掘っていって、ディレクトリパス+ファイル名の一覧を作成したい時がごく稀にたま~によくあるのでメモ的に残しておきます。

ディレクトリ+ファイルのリスト作成のサンプル

find * -type f

で出来ます。 @angel_p_57 さんありがとうございます!!

今回のディレクトリ構成

01_hokkaido
└ 001_sapporo
  └xxxxx.jpg
  └xxxxx.jpg
  └xxxxx.jpg
└ 002_obihiro
└ 003_hakodate
  ⁝
02_aomori
└ 002_aomori
  ⁝
03_iwate
⁝

過去の苦労

ls -1 | while read LINE
do
    PREFECTURE=${LINE}
    ls -1 "${PREFECTURE}" | while read LINE2
    do
        CITY="${LINE2}"
        ls -1 "${PREFECTURE}"/"${LINE2}" | while read LINE3
        do
            FILE="${LINE3}"
            echo "${PREFECTURE}"/"${CITY}"/"${FILE}"
        done
    done
done

再帰関数を使えばもう少しうまく書けるかもしれない。
つよつよエンジニアの変態ワンライナーの人がいたら教えてください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ディレクトを掘っていき、ディレクトリパス+ファイル名の一覧を作成するサンプルスクリプト

ディレクトリ掘っていって、ディレクトリパス+ファイル名の一覧を作成したい時がごく稀にたま~によくあるのでメモ的に残しておきます。

ディレクトリ+ファイルのリスト作成のサンプル

find * -type f

で出来ます。 @angel_p_57 さんありがとうございます!!

今回のディレクトリ構成

01_hokkaido
└ 001_sapporo
  └xxxxx.jpg
  └xxxxx.jpg
  └xxxxx.jpg
└ 002_obihiro
└ 003_hakodate
  ⁝
02_aomori
└ 002_aomori
  ⁝
03_iwate
⁝

過去の苦労

ls -1 | while read LINE
do
    PREFECTURE=${LINE}
    ls -1 "${PREFECTURE}" | while read LINE2
    do
        CITY="${LINE2}"
        ls -1 "${PREFECTURE}"/"${LINE2}" | while read LINE3
        do
            FILE="${LINE3}"
            echo "${PREFECTURE}"/"${CITY}"/"${FILE}"
        done
    done
done

再帰関数を使えばもう少しうまく書けるかもしれない。
つよつよエンジニアの変態ワンライナーの人がいたら教えてください。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む