Hatena::Groupmylinux

今日も元気にlinux

2008-11-13

[][]ターミナル上で簡単な計算が出来るbc 11:35 ターミナル上で簡単な計算が出来るbc - 今日も元気にlinux を含むブックマーク はてなブックマーク - ターミナル上で簡単な計算が出来るbc - 今日も元気にlinux ターミナル上で簡単な計算が出来るbc - 今日も元気にlinux のブックマークコメント

$ bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
5 + (10 * 2 )
25
quit
$

やたらとman bcが長い。工夫次第でいろいろできるみたいです。bc -l で標準数学ライブラリ(sinとかcosとか)も使用可能になるので、Windowsのcalcより便利そう。

[][]sudoの設定とか 11:35 sudoの設定とか - 今日も元気にlinux を含むブックマーク はてなブックマーク - sudoの設定とか - 今日も元気にlinux sudoの設定とか - 今日も元気にlinux のブックマークコメント

LinuxOSには一般ユーザーに一時的に管理者権限を付与するsudoがあるが、これを使うには設定が必要。/etc/sudoersファイルをvisudoコマンドで編集し(viで編集しないこと!)、「%[ユーザーID] ALL=(ALL) ALL」の行を追加する。これで指定したユーザーが全てのコマンドを全てのアクセス元より実行できる事になる。その他、指定したアクセス元のみ、指定したコマンドのみ実行可能と設定もできる。

一度sudoに成功すると、規定では5分の間パスワード入力なしでsudoを利用できる。これは設定変更可能である。

sudo による管理者権限の付与

[][]ls -al /devで表示されるbrw-rw---- crw-rw----について 16:41 ls -al /devで表示されるbrw-rw---- crw-rw----について - 今日も元気にlinux を含むブックマーク はてなブックマーク - ls -al /devで表示されるbrw-rw---- crw-rw----について - 今日も元気にlinux ls -al /devで表示されるbrw-rw---- crw-rw----について - 今日も元気にlinux のブックマークコメント

/dev内でls- alを実行すると謎の属性が表示された。以下適当に抜粋。

$ ls -al /dev
合計 8
crw-rw----  1 root root    14,  10 11月  4 01:45 dmfm
crw-rw----  1 root root    14,   9 11月  4 01:45 dmmidi
crw-------  1 root root    14,   3 11月  4 01:45 dsp
brw-rw----  1 root floppy   2,   0 11月  4 01:45 fd0
brw-rw----  1 root floppy   2,  84 11月  4 01:45 fd0u1040
brw-rw----  1 root floppy   2,  88 11月  4 01:45 fd0u1120
srwxrwxrwx  1 root root          0 11月  4 01:46 gpmctl
brw-r-----  1 root disk     3,   0 11月  4 10:45 hda
brw-r-----  1 root disk     3,   1 11月  4 01:45 hda1
brw-r-----  1 root disk     3,   2 11月  4 10:45 hda2
brw-r-----  1 root disk     3,   3 11月  4 10:45 hda3
crw-------  1 root root    10, 228 11月  4 01:45 hpet
prw-------  1 root root          0 11月  4 01:45 initctl
drwxr-xr-x  2 root root        160 11月  4 01:45 input
crw-------  1 root root     1,  11 11月  4 01:45 kmsg
srw-rw-rw-  1 root root          0 11月  4 01:45 log
brw-r-----  1 root disk     7,   0 11月  4 01:45 loop0
brw-r-----  1 root disk     1,   2 11月  4 10:45 ram2
brw-r-----  1 root disk     1,   3 11月  4 10:45 ram3
brw-r-----  1 root disk     1,   4 11月  4 10:45 ram4
crw-rw----  1 root tty      4,  37 11月  4 01:45 tty37
crw-rw----  1 root tty      4,  38 11月  4 01:45 tty38

こりゃなんじゃってことで調べると、どうやらスペシャル・ファイルと呼ばれるものらしい。

デバイスファイル - Wikipedia

スペシャル・ファイルとは、デバイスノードとも呼ばれ、主にHDDやメモリやプリンタやUSBメモリが扱われる。Windowsではマウントが完了したオブジェクトマイコンピュータに表示されるのに対して、Linuxではls -al で普通のファイルと一緒に見えてしまうので(慣れるまでは)分かりづらいけど、他のファイルと同じように扱えるので、シェルから操作しやすい利点がある。

こういう

  • レジストリがなく、設定は全てテキストファイル
  • デバイスは特殊なViewがなく他のファイルと同じように見える

ってフラット感がLinuxだよななぁ。

Windowsでもmountvolっていうデバイスマウントコマンドがあるけど、実用ではほとんど使わない。

キャラクタデバイスとブロックデバイス

スペシャルファイルはキャラクタデバイスとブロックデバイスに分類される。

キャラクタデバイス
デバイスに向けてシーケンシャルにデータを送信するタイプ。リモート端末とか。バッファを持たず逐次書き込み。
ブロックデバイス
ランダムアクセス可能なデバイスHDDとかメモリとかが代表例。バッファを持ち、バッファデバイス側で指定されたブロックサイズ(16kとか)に到達したら書き込みを行う。

俺はこの説明でイメージ掴めるけど、不慣れな人には厳しいような…。

/dev以下のファイル

/dev以下のファイルの用途が気になるところだけど、たくさんありすぎるので一部だけ調べてみます。

/dev/hda、/dev/sda

/dev/hdaはIDEデバイス、/dev/sdaはSCSIデバイスです。主にHDDマウントされることが多いですね。ただ/dev/sdaはUSB接続のディスク装置も使用するし、no titleの通り、ドライバによってはIDEデバイスも/dev/sdaにマウントするようです。なお、命名法則は

となります。物理デバイス認識の順番で3文字目がa,b,c…と変化してゆき、論理パーティションの順番で4文字目が1,2,3…と変化します。

1.デバイスファイル(SCSIデバイス、IDEデバイス)(第3章ディスク管理とファイルシステム:基本管理コースI)

/dev/zero

/dev/zeroは読み出すと"「 0」(\0、NULL)"を返す特殊ファイルです。

dd if=/dev/zero of=/dev/hda1 とかするとHDDのデータが全消去されます

no title

[][][]ループバック・デバイスの利用 16:41 ループバック・デバイスの利用 - 今日も元気にlinux を含むブックマーク はてなブックマーク - ループバック・デバイスの利用 - 今日も元気にlinux ループバック・デバイスの利用 - 今日も元気にlinux のブックマークコメント

で、ブロックデバイスを手動で作る手段にループバック・デバイスという機能があります。

no title

まず最初に100MBのファイルを作ります。

# dd if=/dev/zero of=./disk bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.44443 seconds, 72.6 MB/s

ddとは「ファイルの変換とコピーを行うコマンド」です。まぁこれだけじゃ言葉足らず過ぎるくらい多機能なコマンドだと思います。上記コマンドは「/dev/zero」というファイルを「disk」ファイルに「ブロックサイズ1M」で「100回繰り返し」コピーを行っています。つまり、上記コマンドは「100MBの空ファイルを新規作成する」ことになります。

windowsにはfsutilというコマンドで空ファイル作れます。HDDに0書き込みとかはできないけど…。

次にdiskファイルをext3でフォーマットします。

# mkfs.ext3 disk
mke2fs 1.39 (29-May-2006)
disk is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
25688 inodes, 102400 blocks
5120 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
13 block groups
8192 blocks per group, 8192 fragments per group
1976 inodes per group
Superblock backups stored on blocks:
        8193, 24577, 40961, 57345, 73729

Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

最後にmountコマンドでループバック・デバイスとしてマウントします。

#mount -o loop -t ext3 disk /var/tmp/test

マウントされると、/etc/mtabに情報が記録されます。

# cat /etc/mtab
/var/tmp/disk /mnt ext3 rw,loop=/dev/loop0 0 0

アンマウントコマンドは以下の通りです。

# umount -v /var/tmp/disk

終わり。

これに何か意味があるのか?と言われると、良く分かりません(汗 単にパーティション分割をしてるだけのような…。マウントしたイメージファイル内で作業すれば、イメージファイル1つ持ち歩くだけで作業ディレクトリ持ち運べますが。まぁこういう手法を覚えることは重要ですね。