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

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

Linuxのお勉強(2)

f:id:robonchu:20180702214333p:plain

やりたいこと

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

教科書

www.lpi.or.jp

システムファイルを見つける、適切な位置にファイルを配置する

f:id:robonchu:20180702212601p:plain

特定のディレクトリをupdatedbの情報更新対象外に設定する際はupdatedb.confに設定を記述する。そのまんま。

updatedbコマンドは、locateコマンドやslocateコマンドを使ってファイルの検索をするための情報データベースを最新の状態に保つためのコマンド。

/etc/updatedb.confの内容例

PRUNEFS="sysfs selinuxfs usbdevfs devpts NFS nfs nfs4 afs sfs proc smbfs cifs autofs auto iso9660 udf"
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /net /sfs /selinux /udev /mnt/floppy /media"
export PRUNEFS
export PRUNEPATHS
  • PRUNEFS: mountコマンドでマウントする際に指定するファイルシステムの種類

  • PRUNEPATHS: 具体的なパスの指定

pruneは余分なものを取り除くという意味がある

参考: 104.7 システムファイルを見つける、適切な位置にファイルを配置する|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

ハードリンクとシンボリックリンクを作成・変更する

  • ハードリンクは、実体を共有している

  • 異なるファイル名(リンク名)に同一のiノード番号を割り当てることで実現している

  • 異なるパーティションにまたがってのリンクは、シンボリックリンクを使う

参考: 6.ユーザー管理

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

  • 新たに作成されたファイルやディレクトリの所有ユーザーは、作成したユーザーと、そのユーザーのプライマリグループに設定される

  • プライマリグループとは、ユーザが何らかのコマンドを実行する際にグループ権限として参照される一番優先順位の高いグループのこと

  • "ファイルの所有ユーザーを変更できる"のは、rootユーザーのみ

  • "ディレクトリの所有者"が関係するのは、パーミッションと合わせて書き込み可能かどうかについてのみ

  • "ファイルの所有グループを変更できる"のは、rootユーザー or そのファイルを所有しているユーザー

Q: 作成したファイルを他のユーザーにもアクセスさせたいときはどうするの?

A: 所有グループを変更し、適切なパーミッションを与える

例:fileファイルをotherグループに対して読み書き可能にする

$ touch file          fileファイルを作成
$ chgrp other file    fileの所有グループをotherに設定
$ chmod g+rw file     fileのグループパーミッションをrwに設定

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

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

  • umaskの考え方は、すべてのパーミッションが読み書き可能な状態から、umaskの値を引いた値が設定される

  • 設定値は所有者、グループ、その他の順にそれぞれ0から7の整数で表わされる

  • ファイル:666がデフォルト

  • ディレクトリ:777がデフォルト

例:

○ファイルの場合

 666 (rw-rw-rw-)
-002 (-------w-)
-----------------
 664 (rw-rw-r--)

ディレクトリの場合

777 (rwxrwxrwx)
-002 (-------w-)
-----------------
 775 (rwxrwxr-x)

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

ファイルシステムの整合性を保持する

  • Linuxで標準的に使用されているファイルシステム ext2/ext3 は、ファイルの管理にiノードを使用している

  • iノードの仕組みは、実際にファイルのデータを保管しているデータ領域とは別に、iノード情報を保管するiノード領域が確保されている

  • iノード領域の使用状況は、dfコマンドに-iオプションをつけることで確認できる

例)データ領域の使用状況

$ df
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/hda2             19656572  14523320   4134752  78% /
none                    262240         0    262240   0% /dev/shm

例)iノード領域の使用状況

$ df -i
Filesystem            Iノード  I使用   I残り I使用% マウント位置
/dev/hda2            2496960  333530 2163430   14% /
none                   65560       1   65559    1% /dev/shm

例)2KB毎にiノードを割り当てる

mke2fs -i 2048 /dev/hda2

割り当てられるブロックサイズよりも小さいファイルが大量に作成されるような場合には、iノード割当量を変更を検討すべき

参考: 104.2 ファイルシステムの整合性を保持する|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

パーティションファイルシステムの作成

ファイルシステムジャーナリング機能とは: 突然の電源断など正常なシャットダウン処理が行えなかった際の、再起動時のファイルシステムチェックを効率よく行う仕組み

具体的には、実際の書き込みを行う前にジャーナルに記録を行い、もし異常終了が起きた場合は、ジャーナルの情報に基づいて壊れている可能性がある部分だけをチェックして修復する

ジャーナリング機能を備えたファイルシステムの例↓

参考:

viを使って基本的なファイル編集を行う

Q: テキストファイルの最終行にカーソル移動させるコマンドは?

A: G

  • Go ToのG

  • 10Gと指定すれば10行目へ移動する

参考: viエディタの使い方

プロセスの実行優先度を変更する

  • Linuxは、複数のプロセスを同時に並行して動作させるマルチプロセスのOS

  • ある時点で動作しているプロセスは1つだけで時間を区切って順番にプロセスを切り替えて実行することで、見かけ上複数が同時並行で動作しているように見せている

  • nice値は、重要度はそれほど高くないプロセスには低い優先順位をつけて、他のプロセスの実行を邪魔をしないようにしたりすることで、円滑なプロセス実行を可能にする仕組み

  • nice値は、-20(最高優先)から19(最低優先)までの40段階に分かれており、基本的にデフォルトは中間の0に設定

  • reniceコマンドは、実行中のプロセスのnice値を変更できる

例: PID 2742のnice値を10に変更

renice 10 2742

参考: 103.6 プロセスの実行優先度を変更する|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

プロセスを生成、監視、終了する

プロセスには、以下の2種類に大きく分けられる↓

  • システム起動時に実行されたり、システム管理者が起動したプロセス

  • システムを利用しているユーザーが実行しているプロセス

ジョブ: 中断されているプロセスや、バックグラウンドで実行されているプロセスのこと.

jobsコマンドを実行することでどのようなジョブが実行されているかを確認することができる

ストリーム、パイプ、リダイレクトを使う

標準入出力には番号がついており、番号指定でストリームを制御することができる↓

0 標準入力

1 標準出力

2 標準エラー出力

例1: 標準エラー出力をファイルに保存したい場合

command 2> error.txt

例2: 標準出力と標準エラー出力を、別々のファイルに出力する場合

command > file.txt 2> error.txt

例3: 標準出力と標準エラー出力を同じファイルに出力する場合

command 1> file.txt 2>&1

&を使って標準出力に標準エラー出力を混ぜる

参考: 103.4 ストリーム、パイプ、リダイレクトを使う|サンプル問題/例題解説|受験対策|IT資格といえばLPI-Japan | LinuC/OSS-DB/HTML5/OPCEL/LPIC

所感

まだまだLinuxシステムについての理解が足りない。。。

一歩ずつ !