空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Linuxのお勉強(1)

やりたいこと

linuxの構造やコマンドの知識を増やしたい

教科書

www.lpi.or.jp

ハードリンクとシンボリックリンクの作成・変更

ハードリンクとは: ハードリンクは、既に存在するファイルに別名を付けること、または作成されたリンクそのものを指す言葉です。

また、Linux上のファイルは、全てiノード番号という番号でデータとの紐付けが管理されています。

$ ls -i
2753226 test1.txt
2753345 test2.txt

$ ln test1.txt test3.txt

$ ln -i
2753226 test1.txt
2753345 test2.txt
2753226 test3.txt

ハードリンクを利用することで、別のパスに同じ内容のファイルを作ることができます。また新たにハードリンクを作成しても、基本的にディスク容量が増えません。

この特性は、ファイルの管理や、バックアップの技術に応用されています。

ハードリンクのメリット: ハードリンクを使った効率的なバックアップ - DoMshi

参考:

RPMおよびYUMパッケージ管理の管理

RPMとは: rpm」は、Red Hat系のLinuxディストリビューションで使われている“RPMRed Hat Package Manager)パッケージ”を扱うことができるパッケージ管理コマンド

なお、CentOSなどで使われている「Yum」というパッケージ管理システム(コマンド名:yum)も、RPMデータベースを参照しています

  1. rpm -ql [パッケージ名]
    • パッケージに含まれるファイルの一覧を表示するコマンド
  2. rpm -q [パッケージ名]
    • システムにパッケージがインストールされているかを調べるためのコマンド
  3. rpm -qi [パッケージ名]
    • パッケージの情報を調べるためのコマンド
  4. rpm -qR [パッケージ名]
    • 指定されたパッケージが依存するパッケージ・ライブラリ等を出力するためのコマンド

参考:

ハードディスクのレイアウト設計

スワップスペース: 実メモリが不足した場合に、メモリ上のデータを退避するための領域

  • システムが動作するためのメモリサイズが充分な場合、スワップスペースは必須ではありません。

  • スワップスペースのサイズは、任意で決めることができます。

  • 一時的なファイルを配置するための領域は/tmp領域の役割

スワップスペースへのデータの退避のことを「スワップアウト」、退避したデータをメモリに戻すことを「スワップイン」と呼びます。システムのメモリ不足が頻繁に発生すると、スワップアウト・インが短期間に繰り返されます。

この状況を「スラッシング」と呼び、メモリの出し入れにCPUの処理能力が奪われ、最悪の場合システムの停止が発生することもあります。

スワップスペースは、設定しておけば安心というものではなく、 あくまで一時的なメモリ不足を補うための領域、という認識を持ってチューニングすることが必要です。

参考:

ファイルシステムのマウントとアンマウントの制御

DVDのISOイメージファイルlinux.isoを/mntにマウントする場合: mount -o loop,ro -t iso9660 /var/lib/image/linux.iso /mnt

-o … マウントオプションを指定します。オプションには以下のような値を指定します。

    ro      … 読み取り専用モードでマウントする

    rw      … 読み書き可能なモードでマウントする

    loop    … ループバックデバイスとしてマウントする

-t … ファイルシステムのタイプを指定する

mountコマンドで、ループバックマウントを行うためには、マウントオプションにloopを指定します。

またCD-ROMやDVDで利用されるファイルシステムiso9660」を指定します。

ループバックシステム

一般的なファイルを,あたかもハード・ディスクなどのブロック型デバイスであるかのように扱うための機能です。

パソコン上でイメージ・ファイルを直接操作したい場合などに使います。「ループ・デバイス」とも呼ばれます。

参考:

  • [http://tech.nikkeibp.co.jp/it/article/Keyword/20081023/317625/:title]

  • [http://tech.nikkeibp.co.jp/it/article/Keyword/20080118/291396/:title]

  • [https://eng-entrance.com/linux-make-filesystem#i:title]

  • [https://qiita.com/sion_cojp/items/c8e015db39ddbf43012e:title]

Debianパッケージ管理の使用

APTの大きな特徴は、上記のdpkgの不便な点を改善している点です。APTはシステムの一部として、ソースファイルと呼ばれるパッケージの一覧を使用します。

[ソースファイル例:/etc/apt/sources.list ]

deb http://http.us.debian.org/debian stable main contrib non-free

deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

deb http://security.debian.org stable/updates main contrib non-free

APTは、このソースファイルに含まれるURLなどの情報から、パッケージの参照やダウンロードなどの操作を行ないます。

apt-getは、APTに含まれるコマンドのひとつです。主にパッケージのインストールやアップデートなどの操作を行うためのコマンドです。apt-getの主な使い方は以下の通りです。

apt-get install [パッケージ名] … [パッケージ名]に指定したパッケージをインストールまたは更新する

apt-get remove [パッケージ名]  … [パッケージ名]に指定したパッケージを削除する

apt-get purge [パッケージ名]  … [パッケージ名]に指定したパッケージを、設定ファイルを含めて削除する

apt-get update … パッケージ一覧を更新する

apt-get upgrade … システムにインストールされているパッケージを全て更新する

apt-get dist-upgrade … ディストリビューションを更新する

参考:[http://www.lpi.or.jp/ex/101/ex_3195.shtml:title]

おまけ

$ apt moo
                 (__) 
                 (oo) 
           /------\/ 
          / |    ||   
         *  /\---/\ 
            ~~   ~~   
..."Have you mooed today?"...

参考:

フィルタを使ったテキストストリームの処理

  1. 「nl /etc/passwd」を実行すると、/etc/passwdの行頭に行番号が追加されて出力される

  2. 「head -n 10 /etc/passwd」を実行すると、/etc/passwdの先頭から10行が出力される

  3. 「tail -n 10 /etc/passwd」を実行すると、/etc/passwdの末尾から10行が出力される

参考:103.2 フィルタを使ったテキストストリームの処理|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

wcコマンドは、ファイルの行数やバイト数、単語数を出力するコマンドです。 以下のように出力されます。左から行数・単語数・バイト数・ファイル名です。

$ wc /etc/passwd

69 104 3283 /etc/passwd

ただし、オプションを指定することで、出力する情報を限定することが可能です。

[wcコマンドの主なオプション]

-c … バイト数のみを出力する

-w … 単語数のみを出力する

-l … 行数のみを出力する

参考:

ストリーム、パイプ、リダイレクトの使用

リダイレクトは、入出力の切り替えを行う機能です。

「>」は標準出力の切り替えを意味し、「<」は標準入力の切り替えを意味します。

「コマンド > ファイル」を実行すると、コマンドが標準出力に出力したデータを、ディスプレイに出力するのではなく、ファイルに出力する動きになります。

この時、ファイルが存在しない場合はファイルを作成し、ファイルが存在する場合、データを上書きします。

一方で、「コマンド >> ファイル」を実行すると、データの追記が行われます。

また「コマンド < ファイル」を実行すると、入力をキーボードからファイルに切り替えます。つまりファイルを読み込んでコマンドに入力として渡す動きになります。

その他の使い方として、以下が挙げられます。

「コマンド 2> ファイル」を実行すると、標準エラー出力をファイルに出力します。

「コマンド > ファイル 2>&1」を実行すると、標準出力・標準エラー出力ともにファイルに出力します。

参考:

ファイルのパーミッションと所有者の管理

Linuxの権限の基本は、「読み込み」「書き込み」「実行」の3つです。 この3つの権限を、ファイルやディレクトリのオーナーやグループ、その他のユーザにどこまで許可をするかを決めることができます。

文字の意味は以下です。

r … 読み込み

w … 書き込み

x … 実行

この表記は、ビット(2進数)で表すことができます。 「rwx」の並び順で、許可されていなければ0、許可されていれば1となります。

例えばオーナーの権限「rwx」はすべて許可されているので、「111」(2進数)です。「111」を8進数に変換すると「7」になります。

またグループとその他の権限「r--」は「100」(2進数)ですので、8進数に変換すると「4」になります。つまり、「rwxr--r--」は8進数表記で「744」となります。

chmodコマンドは、権限を文字で設定することも、数値で設定することもできます。

文字で表現する場合、所有者の情報は以下のように表現します。

u … 所有者

g … グループ

o … その他のユーザ

a … すべて

この所有者情報に対して「chmod g+w ファイル名」などのように、「+」や「-」の記号で、権限を付与したり解除することができます。また「chmod 644 ファイル名」などのように数値で、権限を指定することもできます。

参考:104.5 ファイルのパーミッションと所有者の管理|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

フィルタを使ったテキストストリームの処理

expandコマンドは、引数で指定されたファイルや、標準入力から受け取ったデータに含まれるタブ文字を半角スペースに変換するコマンドです。タブ文字は字下げなどをする場合に便利ですが、環境依存で見え方が変わってしまうというデメリットもあります。

そういう時にexpandコマンドでタブを半角スペースに変換しておくことで、見た目を統一できるというメリットがあります。

関係するコマンドリスト

  • cut

  • expand

  • fmt

  • join

  • od

  • paste

  • pr

  • sed

  • sort

  • split

  • tr

  • unexpand

  • uniq

参考:

RPMおよびYUMパッケージ管理の使用

rpmコマンドは、Redhat系OSなどで採用されているRPMパッケージーマネージャを管理するためのコマンドです。 このコマンドを利用して、ソフトウェアのインストールやアンインストール、アップデートなどの操作を行うことができます。

rpmコマンドの主なオプションは以下の通りです。

-i パッケージ … 指定したパッケージをインストールします

-F パッケージ … 指定したパッケージがインストールされている場合、アップデートします

-U パッケージ … 指定したパッケージがインストールされていない場合は、インストール インストールされている場合は、アップデートを行います

-qa … インストールされているパッケージの一覧を表示します

-ql パッケージ … 指定したパッケージのファイル一覧を表示します

-qi パッケージ … 指定したパッケージの情報を表示します

参考: 102.5 RPMおよびYUMパッケージ管理の使用|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

所感

ん〜コマンド、オプションたくさん。。。