スポンサーサイト
投稿日時 : -------- --:--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
-------- --:-- | スポンサー広告
Safari、getElementsByClassNameをネイティブ実装
投稿日時 : 2007-12-26 13:43
 存在してそうで存在していないメソッドの代表格getElementsByClassNameがSafariでネイティブ実装されることになったようです。
 
Safari、JavaScript処理の高速化へ - builder by ZDNet Japan
 
 よく知らなかったんだけど、というか半分以上諦めてたんで調べもしてなかったわけですが、次期Firefox、Operaでもネイティブ実装することが決定しているらしい。
builder by ZDNet Japan
getElementsByClassNameは開発中のFirefoxやOperaでも実装されているため、これで次期Firefox、Opera、Safariの3者がそれぞれネイティブ実装を実現したことになる。
 
 これまではprototype.jsみたいなライブラリ使ったり、自分で作ったりしてがんばってたわけですが、結局無理矢理forとかforinで回してたんで検索エレメント数が増えてくると激しく重くなってたわけです。
 
prototype.js の document.getElementsByClassName は重い - IT戦記
 
これがネイティブ実装されることで劇的に処理速度が向上するという本当に嬉しいニュース。
 
 このニュースでは大御所のIEの情報がないようですがどうなってんだろう。そういえばJavascriptやり始めた当初、IEでclassがsetAttributeできないバグで発狂しそうになった覚えがある。
 
スポンサーサイト
2007-12-26 13:43 | Javascript | Comment(0) | Trackback(0)
JavaScript実行速度はやはりOperaが最速
投稿日時 : 2007-12-22 11:29
 JavaScriptベンチマーク結果発表、OperaとSafari3が高速 | エンタープライズ | マイコミジャーナル
 
OperaがMicrosoftを提訴 - IEのバンドルは不法と主張」のエントリでも触れたがOperaはやはり軽い。IE7なんかと比べると体感速度として明らかに大きな差があるのは今回の最新のベンチマークの結果からも数値として明らかになった。
 
Coding Horror: The Great Browser JavaScript Showdown
browser benchmark

 
っていうかとりあえずIE7のstring処理がいくらなんでも遅すぎるだろw
で、Operaと僅差のSafariのページではOperaよりSafariの方がJavascriptが高速に動作すると謳っている。しかも、Javascript以外の項目でも、主要ブラウザの中でSafariが最も高速に動作すると書いてある。わかりやすいグラフも掲載されているが、「最速のブラウザはどれ? - GIGAZINE」の内容などと比べてもちょっとあやしいような。
 
アップル - Safari 3 パブリックベータ
borwser benchmark by apple

 
 まあJavascriptの実行速度に関しては、確かにもともとOperaとSafariに大きな差があるわけではないので、実験項目の設定の仕方によってはSafariの方が高速になる、ということもあるのかもしれない。しかし特定の条件下でのみ高速です、というのでは実際にユーザが使用したときの体感速度とはズレが生じてしまう。そのあたりを考えるとやはり第三者のベンチマーク結果の方が、実験項目も評価も公平で信頼できるものな気がする。
 一方、IEのシェアを一気に削ったFirefoxは、メモリのバカ食いや「もっさり」と形容される緩慢な動作でベンチマークではあまりいい評価を得られていないが、現在のFirefox2系の後継のFirefox3ではえらく動作速度が向上するらしい。最近beta2が公開されたようなのでどうせならFirefox3も含めたベンチマークが見たかった。
 
2007-12-22 11:29 | Javascript | Comment(0) | Trackback(0)
[Linux] ポートスキャンして開いているポートを確認する
投稿日時 : 2007-12-19 19:27
 あるサーバが思惑通り正常に動作しているか、または自分が把握していないサーバがいつのまにか動作していないかを確認するためにも、普段から開いているポートを把握しておくことは必要。 nmapはポートスキャンに特化したコマンドなのでこれを利用する。まずはインストール。
$ sudo apt-get install nmap
使いかたは簡単。基本的な書式は以下。
nmapの書式
nmap [<オプション>] <ホスト名>

 
■TCPポートをスキャンする
自分自身(localhost)のTCPポートをスキャン
itmst@mv1c3e:~$ nmap localhost

Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-19 17:34 JST
Interesting ports on mv1c3e.lan (127.0.0.1):
Not shown: 1685 closed ports
PORT      STATE SERVICE
53/tcp    open  domain
111/tcp   open  rpcbind
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
631/tcp   open  ipp
692/tcp   open  unknown
698/tcp   open  unknown
706/tcp   open  silc
953/tcp   open  rndc
2049/tcp  open  nfs
5432/tcp  open  postgres
31416/tcp open  boinc-client

Nmap finished: 1 IP address (1 host up) scanned in 0.245 seconds

 
続いてサーバ機のWindowsXP(192.168.0.2/24)のTCPポートをスキャンしてみる。
itmst@mv1c3e:~$ nmap 192.168.0.2

Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-19 17:14 JST
Note: Host seems down.
If it is really up, but blocking our ping probes, try -P0
Nmap finished: 1 IP address (0 hosts up) scanned in 4.012 seconds
反応がない。英文を翻訳すると「ホストが落ちるてるみたい。もしちゃんと動いてるんならブロックされたっぽいよ」と言ってる。XPを確認するとファイアウォールのOutpostがしっかりポートスキャンを検知し攻撃とみなしてブロックしていた。
 
portscan blocked by outpost
 
このようにポートスキャンは攻撃行為と見做されるので自分で管理しているネットワークでのみ使用する方がよい。というかするべきだ。
 Outopostが優秀なのは証明されたが、これじゃ話が進まないので一時的に無効にして再度ポートスキャン実行。
サーバ機のWindowsXP(192.168.0.2/24)のTCPポートをスキャン
itmst@mv1c3e:~$ nmap 192.168.0.2

Startin Nmap 4.20 ( http://insecure.org ) at 2007-12-19 17:16 JST
Interesting ports on hoge.foo.no-ip.com (192.168.0.2):
Not shown: 1687 closed ports
PORT     STATE SERVICE
21/tcp   open  ftp
25/tcp   open  smtp
79/tcp   open  finger
80/tcp   open  http
110/tcp  open  pop3
135/tcp  open  msrpc
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
990/tcp  open  ftps
6017/tcp open  xmail-ctrl

Nmap finished: 1 IP address (1 host up) scanned in 1.978 seconds
WWW(80)、FTP(21)、SMTP(25)、POP3(110)などのWellknownポートの中のWellknownポートが開いているのが確認できる。
 
■UDPポートをスキャンする
 UDPポートのスキャンは「-sU」オプションを指定して実行するが、TCPポートのスキャンとは違って管理者権限が必要。
 
サーバ機のWindowsXP(192.168.0.2/24)のUDPポートをスキャン
itmst@mv1c3e:~$ sudo nmap -sU 192.168.0.2
[sudo] password for itmst:

Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-19 17:24 JST
Interesting ports on hoge.foo.no-ip.com (192.168.0.2):
Not shown: 1479 closed ports
PORT     STATE         SERVICE
123/udp  open|filtered ntp
137/udp  open|filtered netbios-ns
138/udp  open|filtered netbios-dgm
445/udp  open|filtered microsoft-ds
500/udp  open|filtered isakmp
1031/udp open|filtered iad2
1499/udp open|filtered fhc
1900/udp open|filtered UPnP
4500/udp open|filtered sae-urn
MAC Address: 00:4F:ED:6E:0D:C8 (Lannet Data Communications)

Nmap finished: 1 IP address (1 host up) scanned in 1.648 seconds

 
■OSの種類を判定
 nmapコマンドはポートスキャンするだけではなく、それらの情報から対象ホスト上の動作OSの種類を推定する機能がある。
「-O」オプションを付けるだけだが、実行にはUDPポートスキャンと同じく管理者権限が必要。これには数十秒かかることがある。
WindowsXP(192.168.0.5/24)のOS判定
itmst@mv1c3e:~$ sudo nmap -O 192.168.0.5
[sudo] password for itmst:

Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-19 17:54 JST
Interesting ports on 192.168.0.5:
Not shown: 1693 closed ports
PORT    STATE SERVICE
135/tcp open  msrpc
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds
912/tcp open  unknown
MAC Address: 00:0D:6F:3E:61:E4 (Giga-Byte Technology Co.)
Device type: general purpose
Running: Microsoft Windows XP
OS details: Microsoft Windows XP SP2 (firewall disabled)
Network Distance: 1 hop

OS detection performed.
Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 2.723 seconds

Running: Microsoft Windows XP
OS details: Microsoft Windows XP SP2 (firewall disabled)
と正しく判定できている。
 
2007-12-19 19:27 | Linux | Comment(0) | Trackback(0)
Linuxのwineで動作するWindows用テキストエディタ動作比較
投稿日時 : 2007-12-18 15:10
 geditがいまいちなのでWindows用エディタをWine上で動かそうと思い、まずはWindowsで最高のテキストエディタのひとつと思われるEmEditorを試してみる。が、何やらエラーが出て起動さえできなかった。他のエディタはというと、起動はするもののメニューが文字化けしたり、日本語が入力できなかったり、突然落ちたりとみんな一長一短。いったいどのエディタがまともに動くのか、今まで使用経験のあるエディタを調べてみることにした。
 
実験に使用した環境は以下。
実験環境
PC-MV1C3E (1.0Ghz/768MB)
Ubuntu 7.10
anthy + scim
wine 0.9.51 (Windows XP として動作)

 
実験項目は以下。
項目名内容
名前エディタの名前
Ver使用したエディタのバージョン
起動起動できるかどうか
入力日本語の入力ができるかどうか
バーツールバーやメニューの日本語が正しく表示できるか
設定設定画面などのサブウィンドウの日本語が正しく表示できるか
貼付wine外のアプリから日本語をコピペしたときに正しくペーストされるか
(Firefoxからのコピペ時に文字コードが表示される現象が起きないか)
速度8万行、10MBのApacheのログファイルの処理速度
(スクロール・改行・検索などの体感速度)
選択テキスト選択したときに正しく表示できるか
(選択文字が消える現象が起きないか)
安定フリーズしたり落ちたりしないか
正規正規表現が使えるか
価格価格(フリーウェアかシェアウェアか)
評価主観的な総合評価(0~100点)

 
  以下に実験結果と総合評価を示しますが、これはあくまでも動作保証環境ではない、Linuxのwine上での動作をもとにしたものです。もともとWindows用に開発されたものなので動かなくて当然、動けばラッキーという環境での実験です。なのでWindows上での動作時の評価とはかけ離れたものになっているものもあります。そのあたりを忘れずに。
 
名前Ver起動入力バー設定貼付速度選択安定正規価格評価
Dana1.15.04axxx325520
EmEditor6.00.4xxxxxxxx42005
ez-HTML7.46xxxx040
K2Editorr.1.5.8xx020
MKEditor3.8.1-Jxxx040
MmEditor7.28x400075
Notepad++4.6095
QXEditor6.91xxxx290030
TeraPad0.91x075
UnEditorr.1.6.5x060
WZEditor5.03714080
xyzzy0.2.2.235090
サクラエディタ1.6.2.0xx045
貫太3.3.5x060
秀丸7.07x420080

 
■結果
 1位で最高評価を得たNotepad++は設定画面のタブの日本語が文字化けしているという以外は全てにおいて良好な動作。このクォリティでフリーウェアというのも素晴らしい。
 2位はxyzzy。設定次第でなんとでもなるが多少面倒臭い。機能的な問題点は特に見当たらない。Emacs好きにはたまらないのかな。
 3位は秀丸。さすが長い歴史を歩んできただけにすべてにおいて高いレベル。だがファンクションキーが文字化けしている点と、文字列を選択すると、反転した文字が表示されなくなってしまう。問題ないといえば問題ないがやっぱりちょっと作業しづらい。
 4位のWZEditorはさすが高額製品、動作の軽快さは別次元。貼付文字列の文字コードの自動判別はできないが手動で設定すれば文字化けしない。しかし選択文字とカーソルの位置がずれるバグがあるみたいで、同様の現象をWindowsでも確認できた。ちょっとこれは気になった。
 5位はMmEditor。高いレベルでまとまっている。これも貼付実験で文字コードが表示されてしまったのが難。設定いろいろいじってみたが修正できず。
 6位はTeraPad。定番人気の高機能フリーエディタ。日本語貼付エラーと、正規表現が標準で使えないのが痛い。非常に安定していて、Windowsで評価が高いのもうなずける。
 最下位は愛するEmEditor。ちょっとショック。Windowsでは最高のエディタだと思うが起動すらできなかった。wineのバージョンアップを待つしかない。
 
■総評
 難関の日本語ペースト実験は設定をいじればなんとかなるものもあるのかもしれないが、やはり自動判別できるNotepad++に分がある。xyzzyは使いこなせれば相当強そう。ということでwine上で使うならまずNotepad++。xyzzy使える人はxyzzy使ったほうがいい。秀丸信者は不具合にめげずに使う。WZEditorもカーソルがずれるバグを気にしなければ使える。
 
■Notepad++
screenshot_notepad++  Notepad++はオープンソースで開発されているプラグインで機能を拡張できるタイプのプログラマ専用ソースコードエディタ。C/C++ /Java /C# /XML /HTML /PHP /Javascript /RC resource file /makefile /ASCII art file /doxygen /ini file /batch file /ASP /VB /VBS source files /SQL /Objective-C /CSS /Pascal /Perl /Python /Lua /TCL /Assembler /Ruby /Lisp /Scheme /Properties /Diff /Smalltalk /Postscript and VHDLなどに対応している。(画像はwine上での動作)
 
Notepad++のサイトがカメレオンなデザインでSUSEっぽい。
.:: Notepad++ ::.
http://notepad-plus.sourceforge.net/uk/site.htm
 
 
■xyzzy
screenshot_xyzzy  xyzzyはEmacsライクのCUIの利点とGUIの利点を兼ね備えたちょっとマニアックなテキストエディタ。2005年からMIT Licenseのオープンソースになってる。知らなかった。(画像はwine上での動作)
 
ちーともやる気のない謎のぺぇじ
http://www.jsdlab.co.jp/~kamei/
 
 
2007-12-18 15:10 | Linux | Comment(3) | Trackback(1)
[Ubuntu] Wineで日本語入力できるようにするメモ
投稿日時 : 2007-12-18 12:12
Ubuntu7.10 + Wine 0.9.51で日本語入力を可能にする設定メモ。
 
 「Linuxのwineで動作するWindows用テキストエディタ動作比較」の記事を書く前に少し手間取ったのがWine上のアプリでの日本語入力。入力した文字が消えたり変換すると文字化けしたり、文字の頭が1ミリだけ表示されていたりと不思議な挙動で使いものにならない。昔日本語入力できるように日経Linuxを参考に~/.wine/user.regを編集したはずだったが確認すると、追記したはずの
~/.wine/user.reg
[Software\\Wine\\X11 Driver]
"Inputstyle"="offthespot"
が見当たらない。再度追記して再起動、wineアプリを動作せるとまた記述が消えている。原因がよく分からないが、追記した箇所がエラーと見做されて自動修復でもされたのだろうか。
 少し検索するとuser.regは本来手作業で編集するのではなく、wine上のregedit.exeから編集するものらしいことがわかった。Windowsでの%userprofile%\ntuser.datにあたるファイルということか。
regedit.exe起動
$ wine ~/.wine/drive_c/windows/regedit.exe
で起動したら該当キーの「HKEY_CURRENT_USER\Software\Wine\X11 Driver」を開き、目的のInputStyleの値を確認する。するとタイプが文字列型のREG_SZのくせになんだかバイナリみたいなものが表示されている。値を変更しようとすると「この値は変更できません(だったかな?)」的なことを言われる。バックアップはとってあるし、とりあえず削除して、再度REG_SZでInputStyleを作成。まずは日経Linuxを信用して値を「offthespot」にしてみる。wineに設定をリロードさせる方法がよく分からないのでシステム再起動。その後日本語入力を試みるが状態に変化なし。
 今度は「offthespot」以外の候補で有力そうな「root」にしてみる。
regedit.exe
 結局これでうまくいったようで、設定前まではインラインで入力されていたものが、設定後はウィンドウ外で変換し確定したらキャレット位置に挿入される、という動作に変わった。
input jp on wine app
ウィンドウ左下で変換を行っている。
 
 問題点はあまり長い変換を一度には実行できないらしく、5文字ぐらいごとに入力を区切らなければ変換を確定しても何も起こらないということ。でもまあ個人的にはそんなに困ることでもないのでよしとする。
 
2007-12-18 12:12 | Linux | Comment(0) | Trackback(0)
[Ubuntu] 起動時の解像度を変更して起動ロゴを表示させる
投稿日時 : 2007-12-18 07:27
 今までノートパソコンのPC-MV1C3Eに入れてるUbuntuが、grubメニューの後画面が真っ暗になってログイン画面が出るまでそのままだった。けっこう長い間こんなもんかと思っていたが、サブマシンのデスクトップにUbuntuを入れたら起動時にUbuntuのロゴと起動進捗状況が表示されるていることに気づく。
 これはどうやら起動時に指定されている解像度がその段階では表示できない解像度であることが原因のようだ。起動時の解像度は/etc/usplash.confで指定されている。まずこの設定ファイルを修正する。
/etc/usplash.conf
# Usplash configuration file
xres=1024
yres=768

この値を以下のように書き換える。
/etc/usplash.conf
# Usplash configuration file
xres=640
yres=480
*はじめ「xres=800」、「yres=600」としたが状況が変わらなかったので同じ比率で上記の値にまで落とした。640x480はつまりVGAサイズ。
 
 続いて以下のコマンドでブートイメージファイルに設定変更を反映させる。この処理が終わるまで30秒ほど時間がかかる。
sudo itmst@mv1c3e:~$ sudo update-initramfs -u -k all
[sudo] password for itmst:
update-initramfs: Generating /boot/initrd.img-2.6.22-14-generic
update-initramfs: Generating /boot/initrd.img-2.6.20-16-generic

 
再起動するとロゴが表示されるようになっている。
 
[参考]
Linux Salad: ブートスプラッシュスクリーンの解像度を変更して黒い表示をなおそう!
 
2007-12-18 07:27 | Linux | Comment(0) | Trackback(0)
[Ubuntu] PostgreSQLのインストール・初期設定・使い方メモ
投稿日時 : 2007-12-18 06:19
PostgreSQLの基本的な使い方と初期設定メモ。
 
■PostgreSQLのインストール
Ubuntu7.10にインストールする。
$ sudo apt-get install postgresql
だけで以下のように依存パッケージを自動でインストールしてくれます。
postgresqlのインストール
$ sudo apt-get install postgresql
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
Reading state information... 完了            
以下の特別パッケージがインストールされます:
  libpq5 postgresql-8.2 postgresql-client-8.2 postgresql-client-common
  postgresql-common

■PostgreSQLのユーザ管理
 PostgreSQLはLinuxのアカウントとは別にデータベースユーザを管理している。デフォルトでpostgresというユーザのみが登録されている。とりあえずpasswdコマンドでパスワードを設定する。
$ sudo passwd postgres
新たなデータベースユーザを追加する場合はsuで、データベースの管理ユーザであるpostgresになってから行う。
itmst@mv1c3e:~$ su - postgres
パスワード: 
postgres@mv1c3e:~$ createuser -P itmst
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) y
CREATE ROLE

■新規にデータベースを作成する
 以下のようにcreatedbコマンドでmydbというデータベースを作成。引数にデータベース名を指定。もし指定がなければcreatedbコマンドを実行したユーザ名と同名のデータベースが作成される。先ほどユーザitmstをデータベースの管理ユーザとして登録したのでこのcreatedbコマンドが実行可能になっている。
itmst@mv1c3e:~$ createdb mydb
CREATE DATABASE

 
■psqlコマンドでデータベースに接続する
 psqlはPostgreSQLの最も基本的なデータベースクライアント。引数に接続するデータベース名を指定する。ここではさっき作成したmydbを指定している。接続できると対話モードに移行する。
itmst@mv1c3e:~$ psql mydb
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

mydb=# 
 プロンプトが「mydb=#」となり、データベース「mydb」に正常に接続できていることが分かる。ここからはpsqlの内部コマンドとSQLコマンドを使ってデータベースを操作していく。psqlの内部コマンドは「\」で始まり、大文字・小文字を区別する。SQLコマンドは「\」は不要で、大文字・小文字の区別もない。実行可能なSQLコマンドはpsql内部コマンドの「\h」を使う。
mydb=# \h
Available help:
  ABORT                     CREATE OPERATOR CLASS     END                       

  ALTER AGGREGATE           CREATE OPERATOR           EXECUTE                   

  ALTER CONVERSION          CREATE ROLE               EXPLAIN                   

  ALTER DATABASE            CREATE RULE               FETCH
(省略)  
引数にコマンド名を指定すると個別のヘルプを参照できる。psqlの内部コマンドを確認するには以下のように「\?」を実行。
mydb=# \?
General
  \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                 connect to new database (currently "mydb")
  \cd [DIR]      change the current working directory
  \copyright     show PostgreSQL usage and distribution terms
  \encoding [ENCODING]
                 show or set client encoding
  \h [NAME]      help on syntax of SQL commands, * for all commands
  \q             quit psql
  \set [NAME [VALUE]]
                 set internal variable, or list all if no parameters
  \timing        toggle timing of commands (currently off)
  \unset NAME    unset (delete) internal variable
  \! [COMMAND]   execute command in shell or start interactive shell
(省略)  

終了するときは上記ヘルプにある通り、psqlの内部コマンドである「\q」を実行する。
mydb-# \q
itmst@mv1c3e:~$
データベースから切断し、プロンプトが通常に戻った。
 
■ネットワーク経由の接続を許可する設定
 デフォルトではlocalhost(127.0.0.1)からの接続しか許可しない設定になっている。これをLAN(192.168.0.0/24)からのTCP/IP接続を許可するように設定を変更する。
/etc/pstgresql/8.2/main/postgresql.conf
# listen_addresses = 'localhost'
この行を以下のように書き換える。
/etc/pstgresql/8.2/main/postgresql.conf
listen_addresses = '*'
さらにもうひとファイル修正する。
/etc/pstgresql/8.2/main/pg_hba.conf
host  all  all  192.168.0.0/24  md5
という記述を追加する。設定反映を反映させるにはpostgresqlサービスに設定をリロードさせる。サービス名はバージョン番号がついた「postgresql-8.2」になっている。
$ sudo service postgresql-8.2 relaod

 
正しく設定できているか192.168.0.0/24内の別ホストから接続する。
$ psql -h <ホスト名 | IPアドレス> -U <データベースユーザ名> -d <データベース名>

192.168.0.4/24 から192.168.0.3/24のデータベース「mydb」に接続
itmst@vt550:~$ psql -h 192.168.0.3 -U itmst -d mydb
Password for user itmst: 
Welcome to psql 8.2.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)

mydb=# 
プロンプトが「mydb=#」になりネットワーク越しに接続できることが確認できた。
 
■サービスの自動起動設定
 Ubuntuではインストール後自動的にシステム起動時にサービスが起動するように設定される。この設定を変更するにはsysv-rc-confコマンドを使う。以下のようにランレベルごとの自動起動のON/OFFを切り替えることができる。
初期状態確認→OFF→変更確認→ON→変更確認
itmst@mv1c3e:~$ sysv-rc-conf --list | grep postgresql
postgresql-8 0:off      1:off   2:on    3:on    4:on    5:on    6:off
itmst@mv1c3e:~$ sudo sysv-rc-conf postgresql-8.2 off
itmst@mv1c3e:~$ sysv-rc-conf --list | grep postgresql
postgresql-8 0:off      1:off   2:off   3:off   4:off   5:off   6:off
itmst@mv1c3e:~$ sudo sysv-rc-conf postgresql-8.2 on
itmst@mv1c3e:~$ sysv-rc-conf --list | grep postgresql
postgresql-8 0:off      1:off   2:on    3:on    4:on    5:on    6:off

 
この後のSQLコマンドによるデータベースの構築は以下を参照。
PostgreSQL 入門第2回:PostgreSQL 有効活用術
 
2007-12-18 06:19 | Linux | Comment(2) | Trackback(1)
OperaがMicrosoftを提訴 - IEのバンドルは不法と主張
投稿日時 : 2007-12-14 16:58
 ウェブブラウザ「Opera」を出してるOpera Softwareは、MicrosoftがWindowsにInternet Explorerをバンドルして販売しているのは消費者の選択の自由を不当に奪っており、不法だとして欧州委員会(EC)に申し立てたようです。
 
オペラ、マイクロソフトに対する不服を欧州委員会に申し立て:ニュース - CNET Japan
Opera,MicrosoftをECに提訴,WindowsへのIEバンドル禁止などを要求:ITpro
Opera、「Microsoftのブラウザ戦略が不公正」とEUに提訴
 
 
 ちょっと前にもWindowsMediaPlayerのバンドルに不法判決が出て罰金6億ドルの支払いが命じられている。
Microsoftに対するEUの反トラスト法訴訟が業界に与えた影響:ITpro
 
これで裁判になってMSが敗訴するとWMPのときみたいにIEが搭載されていないWindowsを販売しなければならなくなったりするのかも。しかしIEはOSと深く関わりすぎていてそれだけを剥がすのは不可能に近いという話を聞いたことがある。MSにしたらこれは最も恐れていた事態かも。
 
 
 このOperaブラウザ、最近ではWiiや携帯電話に搭載されたりしてある程度知名度は上がってきてるようだけど、まあまだまだIEのシェアは崩せそうにもない。
 
世界のブラウザシェア統計
W3Counter - Global Web Stats
 
Operaシェア0.91%!ん~低い。IE6とIE7を合わせると約63%。Firefoxがここ数年で一気に20%までシェアを伸ばしたおかげで、数年前のようにIEシェアが90%を超えているというおかしな状況は打破されつつあるが。
 
このシェアが1%にも満たないOperaですが、じゃあショボいのかというと決してそんなことはなく、起動速度、ページ描画速度などはあらゆるブラウザの中で最速。
 
最速のブラウザはどれ? - GIGAZINE
JavaScriptを最速で実行できるブラウザはどれ? - GIGAZINE
 
普段ブラウザが重いと感じている人は一度Operaを使ってみると感動すると思う。古いPCほど体感速度に大きな違いが出る。
 
 で、こんないいもの作ってるのにシェアが低いのはMSの非道なバンドル政策のせいだと。さらにOperaが言うには
INTERNET WATCH
 Operaはこの訴状の中で、Microsoftが同社のブラウザであるInternet Explorer(IE)をWindows OSに結び付けていると同時に、一般的に受け入れられているWeb標準規格に従わないことによって互換性を邪魔することで、支配的な地位を築いていると指摘している。
この主張は分からないでもない。IEは標準規格に準拠しようと努力してるようにはまったく思えない。そういうOperaもちょっとあやしいが。規格準拠度ではオープンソースなFirefoxに分があるかな。とにかくOSの独占的なシェアを利用して、規格外なIEをユーザに使用させることで、IE以外の規格準拠ブラウザへの移行を意図的に妨げているという主張なわけです。
 
CNET Japan
OperaはInternet Explorerのバンドル中止と、「基本的かつオープンなウェブ標準」の順守をMicrosoftに命じるようにECに要求している。
MSがWMPに続きこのIE訴訟にも敗訴して、規格準拠の方向に向かわざるを得なくなるとうれしい。クロスブラウザという言葉が死語になるときがくるのか。
 
 
[参考]
ウェブブラウザの進化系統図 - GIGAZINE
Firefoxの歴史、各種ブラウザの歴史 - GIGAZINE
ウェブブラウザ - Wikipedia
 
2007-12-14 16:58 | News | Comment(0) | Trackback(0)
Ubuntuでserviceコマンドを使えるようにするメモ
投稿日時 : 2007-12-14 14:19
 Ubuntu7.10ではserviceコマンドがデフォルトでインストールされていない。昔どこかで調べて入れたはずなんだけど、最近になって一体どのパッケージに入っていたものか分からなくなったことに気づく。やはりメモは必要だ。こういった時はdpkgコマンドを使って以下のようにして、あるファイルがどのパッケージでインストールされたものなのか調べる。
 
ファイルがどのパッケージでインストールされたか調べる
$ which service
/usr/sbin/service
$ dpkg -S /usr/sbin/service
sysvconfig: /usr/sbin/service
dpkgコマンドに-Sオプションをつけて、whichコマンドで確認したserviceコマンドのパスを渡す。表示された「sysvconfig」がパッケージ名。
rpm系の場合は
$ rpm -if <ファイルパス>

 
パッケージ名が分かったので
$ sudo apt-get install sysvconfig
でインストールする。
 
[参考]
@IT:止められない基幹業務サーバの管理対策 第2回 - Page1
なんか適当なサイト
戯術者の日記 / 2005-11-05
 
2007-12-14 14:19 | Linux | Comment(0) | Trackback(0)
UbuntuでDHCPサーバを稼働させてみる
投稿日時 : 2007-12-14 13:29
Ubuntu7.10でDHCPサーバを動かしてみた。インストールは
$ sudo apt-get install dhcp3-server
だけで完了。
 

■DHCPサーバの設定

設定は以下のような感じ。最低限これだけ書いておけば動くみたいです。LAN環境は最も一般的な192.168.0.0/24の単一サブネット。
/etc/dhcp3/dhcpd.conf
ddns-update-style none;

subnet 192.168.0.0 netmask 255.255.255.0{
	option routers			192.168.0.1;
	option subnet-mask		255.255.255.0;
	
	option domain-name		lan;
	option domain-name-servers	192.168.0.1;
	
	range dynamic-bootp		192.168.0.33 192.168.0.48;
	default-lease-time		21600;
	max-lease-time			43200;
}
1行目の「ddns-update-style none;」はBINDと連系してDHCPでのIP割り当てをDNSに反映させるDynamicDNSの機能を使用するかを設定している。ここではnoneなのでOFFにしてある。この記述はグローバル領域になければならない。個別のsubnetブロック内に書いても無効。ということはサブネット別にDDNSを使用するかしないかは選べないということだろうか?
 
設定項目の意味は以下。
routersデフォルトゲートウェイのIPアドレス
subnet-maskサブネットマスク
domain-nameドメイン名
domain-name-serversDNSサーバのIPアドレス(カンマ区切りで複数可)
range dynamic-bootp割り当てIPアドレスの範囲
default-lease-timeクライアントに指定されなかった場合のリース時間(秒)
max-lease-timeクライアントが指定できるリース時間の上限(秒)
 
$ sudo service dhcp3-server start
でサービス起動。
システムブート時に自動起動する場合は
$ sudo sysv-rc-conf dhcp3-server on
としておけばOK(serviceコマンドとsysv-rc-confコマンドはUbuntu7.10には標準ではインストールされてません)。
 

■DHCPクライアントの設定

クライアント側のマシンでは以下のように設定
Debian系(Ubuntu7.10)の場合
/etc/network/interfaces
 auto eth0
 iface eth0 inet dhcp
RedHat系(Fedora8)の場合
/etc/sysconfig/networking/devices/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:90:FE:2F:A6:11
ONBOOT=yes
設定を反映させるためにnetworkサービスを再起動
networkサービスを再起動
$ sudo service network restart
インターフェースが再起動されるとDHCPクライントがIPをもらいにいく。
 

■DHCPクライアント側での割り当てIPアドレスの確認

DHCPによって割り当てられたIPアドレスやその他の情報は以下のファイルに保存されている。
Ubuntu7.10(dhcp3-clientパッケージが標準インストール)
/var/lib/dhcp3/dhclient.eth0.leases
 
Fedora8
/var/lib/dhclient/dhclient-eth0.leases
 
lease {
  interface "eth0";
  fixed-address 192.168.0.48;
  option subnet-mask 255.255.255.0;
  option routers 192.168.0.1;
  option dhcp-lease-time 21600;
  option dhcp-message-type 5;
  option domain-name-servers 192.168.0.1;
  option dhcp-server-identifier 192.168.0.3;
  option domain-name "lan";
  renew 6 2007/12/15 06:46:45;
  rebind 6 2007/12/15 09:21:26;
  expire 6 2007/12/15 10:06:26;
}
192.168.0.48が割り当てられていることが分かる。IPアドレスの確認だけならifconfigコマンドだけでもいい。
 

■DHCPサーバ側での貸出しIPアドレスの確認

DHCPサーバ側ではどのIPアドレスを貸し出しているかは以下のファイルで確認できる。
/var/lib/dhcp3/dhcpd.leases
lease 192.168.0.48 {
  starts 6 2007/12/15 04:06:29;
  ends 6 2007/12/15 10:06:29;
  binding state active;
  next binding state free;
  hardware ethernet 00:90:FE:2F:A6:11;
}
ここで表示される時間はUTC(世界協定時間)なので日本時間にするには+9時間する。
 

■固定でIPを割り当てる方法

/etc/dhcp3/dhcpd.conf
subnet 192.168.0.0 netmask 255.255.255.0{
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;

        option domain-name              lan;
        option domain-name-servers      192.168.0.1;

        range dynamic-bootp 192.168.0.33 192.168.0.48;
        default-lease-time 21600;
        max-lease-time 43200;
        host vt550{
                hardware ethernet 00:90:FE:2F:A6:11;
                fixed-address 192.168.0.40;
        }
}
subnetブロック内にさらにhostブロックを追加し、特定のIPアドレスを割り当てるホスト(インターフェースカード)のMACアドレスを指定する。書式は以下。
host <ホスト名>{
        hardware ethernet <クライアントMACアドレス>;
        fixed-address <割り当てIPアドレス>;
}
 
 

■サブネット内に複数のDHCPサーバが存在しているときの挙動

 この先はLinuxではなくネットワークの分野になるが、ふと疑問に思ったことがある。自宅のLAN環境ではインターネットにつながっているデフォルトゲートウェイであるブロードバンドルータ(192.168.0.1/24)でもDHCPサーバが動いている。今回Ubuntuで新たにDHCPサーバを立ち上げたので同一サブネット内に複数のDHCPサーバが稼働していることになる。ルータのDHCPサーバのリース範囲を192.168.0.17~192.168.0.32にしてあるので重複したIPを割り当ててしまうということは起こりそうにはないが、どちらのDHCPサーバの情報を使うかはどうやって判断されているのかが分からない。
 少し検索するとこの疑問に答えてくれるぴったりの記事が見付かった。
 
2台のDHCPサーバーが同一LAN上にあったらどうなる?:ITpro
 
 まあ簡単に言えば早い者勝ちらしい。DHCPクライアントからブロードキャストされたDHCPDISCOVERパケットに対して、先にDHCPOFFERを返したDHCPサーバの情報を使うとのこと。クライアントがDHCPOFFERを受け取り、DHCPREQUEST-DHCPACKのやりとりが完了するまではその他のDHCPOFFERは無視される。
 
 ところで上記リンクは「オキテ破りにトライ! ネットワーク実験室:ITpro」の第8回の記事のみたいですが、他の記事も興味深いものが多い。やっていいことを書いてある参考書などはいくらでもあるが、やってはいけないことをやったらどうなるかを切り口に解説を進めるというやり方はレアだし、記憶に残りやすい気がする。
 
[参考]
DHCPの設定は正しいか? - @IT
 
2007-12-14 13:29 | Linux | Comment(0) | Trackback(0)
任天堂Wiiに激似の中国製「Vii威力棒」の中身
投稿日時 : 2007-12-12 12:47
Vii 威力棒
中国に格安Wiiが登場!? リモコンまでそっくりな「Vii威力棒」が発売 | ホビー | マイコミジャーナル
 
中国のLetVGOという会社が、誰が見ても疑いようのないほどWii激似のパクリ商品を「Vii 威力棒」という名前で販売開始したようです。こんなにそっくりなものを前にして放たれたマーケティング担当者の言葉。  
マイコミジャーナル
同社マーケティング部門を率いるTom Xu氏は「Wiiに似ていると思われるかもしれませんが Vii威力棒はプロフェッショナルなゲーム機ではなく、インタラクティブな身体の動きで ゲームをしたい初心者ユーザーが対象となり、格安で提供されます」とコメントしている。
それってWiiのことじゃね?w
ん~仕事とはいえ大変だろうな・・・w
 
まあとりあえずテレビCMを。途中から繰り返しって感じなので雰囲気が分かればOK。
YouTube - 威力棒vii 日本語字幕
 
 
で、このVii威力棒の本体がとんでもなく軽いらしく。いったい中には何が入ってるんだ?ということになったみたいで、早速分解に挑戦する人たちが現れた。これがマジウけた。
 
YouTube - 威力棒vii 解剖 日本語字幕
 
もうなんていうかいろいろひどい。
 
[参考]
Welcome to LetVGO
 
2007-12-12 12:47 | Entertainment | Comment(0) | Trackback(1)
[Ubuntu] ユーザの追加・修正・削除をコマンドで実行
投稿日時 : 2007-12-12 11:16
 NISクライアントにFedora8、NISマスターサーバにUbuntu7.10を使おうとしていたらユーザID(uid)を統一する必要があることが分かった。ついでなのでuidの変更だけでなくユーザの追加・削除の詳細なメモも残すことにした。
 
 ユーザを新規に追加する場合は特に問題はないが、ユーザID(uid)だけを変更する場合などは落とし穴があるので注意。Ubuntuのユーザ管理ツールのusers-admin(システム-システム管理-ユーザとグループ)で操作した時に自動で行われている処理をすべて手打ちで実行する。GUIでやれば簡単だけど、GUIツールはブラックボックスなのでシステムを理解する上では害悪。
 
ユーザ情報に関するファイルは以下の3つ。
/etc/passwd ユーザ情報
/etc/shadow パスワード情報
/etc/group グループ情報
各コマンドはこれらのファイルに変更を加えている。
 
 

■ユーザを追加する

ユーザ名hogeをuid:2000、gid:2000で追加する。権限は管理者ユーザであるitmstと同じにする。赤文字は後で解説を加えてある。
1:hogeのプライマリグループを先に作成
itmst@mv1c3e:~$ sudo groupadd -g 2000 hoge
2:手本にするitmstの所属グループを確認
itmst@mv1c3e:~$ id itmst
uid=1000(itmst) gid=1000(itmst) 所属グループ=1000(itmst),4(adm),20(dialout), 21(fax),24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video), 46(plugdev),104(scanner),112(netdev),113(lpadmin),115(powerdev), 117(admin),119(fuse)
3:ユーザhogeを追加
itmst@mv1c3e:~$ sudo useradd -u 2000 -g 2000 -c hoge -d /home/hoge -s /bin/bash -G 4,20,21,24,25,26,29,30,44,46,104,112,113,115,117,119 hoge
4:パスワード設定
itmst@mv1c3e:~$ sudo passwd hoge
新しいUNIXパスワードを入力してください:
新しいUNIX パスワードを再入力してください:
passwd: パスワードは正しく更新されました
5:追加したhogeの情報を確認する
itmst@mv1c3e:~$ id hoge
uid=2000(hoge) gid=2000(hoge) 所属グループ=2000(hoge),4(adm),20(dialout), 21(fax),24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video), 46(plugdev),104(scanner),112(netdev),113(lpadmin),115(powerdev), 117(admin),119(fuse)
6:デフォルト設定ファイルをhogeのホームディレクトリとしてコピー
itmst@mv1c3e:~$ sudo cp -r /etc/skel/ /home/hoge
7:ファイル所有者の変更
itmst@mv1c3e:~$ sudo chown -R hoge /home/hoge
itmst@mv1c3e:~$ sudo chgrp -R hoge /home/hoge
8:ファイル所有者の確認
itmst@mv1c3e:~$ ls -al /home/hoge
合計 20
drwxr-xr-x 2 hoge hoge 4096 2007-12-11 14:26 .
drwxr-xr-x 7 root root 4096 2007-12-11 14:26 ..
-rw-r--r-- 1 hoge hoge 220 2007-12-11 14:26 .bash_logout
-rw-r--r-- 1 hoge hoge 2298 2007-12-11 14:26 .bashrc
-rw-r--r-- 1 hoge hoge 603 2007-12-11 14:26 .profile
lrwxrwxrwx 1 hoge hoge 26 2007-12-11 14:26 Examples -> /usr/share/example-content
9:GUIツールを起動して正しく設定できたか確認する
itmst@mv1c3e:~$ sudo users-admin
10:hogeで正しくログインできるか確認する
 
1:hogeのプライマリグループを先に作成
先にhogeのプライマリグループを作成しておく。3でユーザを追加するときに-gオプションで所属グループを指定する際にそのグループが既に存在している必要があるため。
 
2:手本にするitmstの所属グループを確認
所属しているグループ名を確認する。GUIツールでプロフィールの選択を「管理者」にした場合に、これらのグループに自動的に所属することになる。
 
3:ユーザhogeを追加
ユーザhogeを以下のオプションを指定して追加する。
useraddの主要オプション
-u <ユーザID>ユーザIDを指定
-g <グループID>プライマリグループのグループIDを指定
-c <文字列>フルネームもしくはコメント
-d <ディレクトリパス>ホームディレクトリのパスを指定
-s <シェルのパス>ログインシェルを指定
-G <サブグループID,[...]>サブグループgid(名前も可)をカンマ区切りで列挙
2で確認した所属グループを-Gオプションで列挙しているので少し長くなっている。
 
4:パスワード設定
hogeのパスワードを設定する。ユーザを追加しただけではパスワードは空で、このままではログインできない。パスワードの設定にはpasswdコマンドを使用する。
 
5:追加したhogeの情報を確認する
手本にしたitmstと同じようになっていればOK。
 
6:デフォルト設定ファイルをhogeのホームディレクトリとしてコピー
新規ユーザのデフォルトの設定ファイルは/etc/skel以下に格納されている。この/etc/skelをhogeのホームディレクトリ用にディレクトリごと/home/hogeにリネームしてコピーする。/etc/skel内のファイルをあらかじめカスタマイズしておくと便利。
 
7-8:ファイル所有者の変更と確認
/home/hogeのオーナがrootになっているのでhogeに所有権を移す。以下のようにすればchownコマンドだけでグループIDもいっしょに変更することができる。
$ sudo chown -R hoge:hoge /home/hoge
-Rはディレクトリ内のファイルも再帰的に処理するオプション。
 
9:GUIツールを起動して正しく設定できたか確認する
GUIツールを使った時と同じように設定できていることを確認する。実際の各設定ファイルも
itmst@mv1c3e:~$ sudo grep hoge /etc/passwd
hoge:x:2000:2000:hoge:/home/hoge:/bin/bash
itmst@mv1c3e:~$ sudo grep hoge /etc/shadow
hoge:$1$L5BJ$BtOS9ATz7HW3LQuTWGmcy15fB.:13858:0:99999:7:::
などとして確認する。
 
10:hogeで正しくログインできるか確認する
hogeでログインできれば完了。ロケール設定や日本語入力ができるかなども一応確認する。
 
 

■ユーザID(uid)とプライマリグループID(gid)を変更する

ユーザhoge(uid2000,gid2000)のuidを2001に変更する。
既に存在するユーザのプロパティを変更するにはusermodコマンドを使用する。ただこれだけではGNOMEやKDEが起動できなくなるので注意。この点に関しては後述する。
 
usermodコマンドのオプションはuseraddコマンドとほぼ同じ。
usermodの主要オプション
-l <ユーザ名>ユーザ名を指定(パスワードは保持される)
-u <ユーザID>ユーザIDを指定
-g <グループID>プライマリグループのグループIDを指定
-c <文字列>フルネームもしくはコメント
-d <ディレクトリパス>ホームディレクトリのパスを指定
-G <サブグループid,[...]>サブグループgid(名前も可)をカンマ区切りで列挙
今回の変更点から必要になるのは-uと-gオプション。その他の詳細なオプションは以下を参照。
 
Linux ユーザ情報の変更 - usermod
 
uidの変更は何の問題もないが、プライマリグループを同じグループ名で違うgidに変更する場合は以下のような挙動になる為、若干手間がかかる。一時的に避難用gidを作成してそちらに移動しておく必要がある。
プライマリgidの変更
$ sudo useradd -u 2100 test ←gidを指定せず、uid2100で追加
$ id test
uid=2100(test) gid=2100(test) 所属グループ=2100(test) ←gid2100
$ sudo usermod -u 2200 test ←uidを2200に
$ id test
uid=2200(test) gid=2100(test) 所属グループ=2100(test) ←gid変化なし
$ sudo usermod -g 2200 test ←gidの変更を試みる
usermod: グループ 2200 は不明です
$ sudo groupadd -g 2200 test ←同名グループの違うgidでの作成を試みる
groupadd: グループ test は既に存在します
$ sudo groupdel test ←削除を試みる
groupdel: ユーザのプライマリグループは削除できません。
$ sudo groupadd -g 2300 tmpgroup ←避難グループを作成
$ sudo usermod -g tmpgroup test ←避難グループにとりあえず移動
$ id test
uid=2200(test) gid=2300(tmpgroup) 所属グループ=2300(tmpgroup)
$ sudo groupdel test ←gid2100のtestグループを削除
$ sudo groupadd -g 2200 test ←gid2200でtestを再作成
$ sudo usermod -g 2200 test ←gid2200をtestのプライマリグループに
$ id test
uid=2200(test) gid=2200(test) 所属グループ=2200(test)
$ sudo groupdel tmpgroup ←避難グループを削除
 
では実際にさっき作ったhogeのuidとgidを2000→2001に変更する。
$ id hoge
uid=2000(hoge) gid=2000(hoge) 所属グループ=2000(hoge),4(adm),20(dialout),21(fax), 24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video),46(plugdev), 104(scanner),112(netdev),113(lpadmin),117(admin),119(fuse)
$ sudo usermod -g 2001 hoge
$ sudo groupadd -g 3000 tmpgroup
$ sudo usermod -g 3000 hoge
$ sudo groupdel hoge
$ sudo groupadd -g 2001 hoge
$ sudo groupdel tmpgroup
$ sudo usermod -u 2001 hoge
$ id hoge
uid=2001(hoge) gid=2001(hoge) 所属グループ=2001(hoge),4(adm),20(dialout),21(fax), 24(cdrom),25(floppy),26(tape),29(audio),30(dip),44(video),46(plugdev), 104(scanner),112(netdev),113(lpadmin),117(admin),119(fuse)
ユーザ名を変更した場合などは/home/hogeなどのディレクトリ名変更、オーナ変更も忘れずに行う。  
 
GNOMEやKDEなどが起動できなくなった場合
 これでhogeでログインしようとするとGNOMEやKDEが起動できないという状況に陥る場合がある。マシンごと再起動すれば問題はないが、再起動できない状況も考えられる。この現象は、GNOMEやKDEがログインしたユーザごとに、/tmp内に専用ディレクトリを作成して管理しているため、uidやgidを変更したことでパーミッションエラーを起こしていることが原因。usermodコマンドが修正してくれるのは/etc内の各設定ファイルだけなので、その他のファイルは手動でなんとかしなければならない。
 具体的な作業は、マシンごと再起動するか、該当ユーザ名の入った/tmp以下のファイルやディレクトリを削除すればよい。
[参考]
落穂拾い uidの変更 @ Momonga  
 

■ユーザを削除する

ホームディレクトリごと削除する
$ sudo userdel -r hoge
-rオプションでホームディレクトリも削除できる。ホームディレクトリを残してユーザを削除した場合は、該当ホームディレクトリの所有者が存在しなくなるので所有者名、所有グループ名の変わりにuid、gidがそのまま表示される。
hogeのuid、gidの2001がそのまま表示されている
itmst@mv1c3e:~$ ls -al /home
合計 28
drwxr-xr-x 5 root root 4096 2007-12-12 06:50 .
drwxr-xr-x 21 root root 4096 2007-12-11 06:59 ..
drwxr-xr-x 24 2001 2001 4096 2007-12-12 09:54 hoge
drwxr-xr-x 68 itmst itmst 12288 2007-12-12 10:07 itmst
 
この状態でuid2001、gid2001で新たなユーザを作成した場合、/home/hogeはその新規ユーザのものになる。
同じuidとgidでユーザを新規作成する
$ sudo groupadd -g 2001 foo
$ sudo useradd -u 2001 -g 2001 foo
$ ls -al /home
合計 28
drwxr-xr-x 5 root root 4096 2007-12-12 06:50 .
drwxr-xr-x 21 root root 4096 2007-12-11 06:59 ..
drwxr-xr-x 24 foo foo 4096 2007-12-12 09:54 hoge
drwxr-xr-x 68 itmst itmst 12288 2007-12-12 10:07 itmst
/home/hogeディレクトリの所有者が新規ユーザのfooになっている。
 
 
 
[参考]
Linux 新規ユーザの作成 - useradd
Linux ユーザ情報の変更 - usermod
Linux資格 LPICを受けようLV1第04回:デバイス、ファイルシステム、FHS編
落穂拾い uidの変更 @ Momonga
 
2007-12-12 11:16 | Linux | Comment(1) | Trackback(0)
Linuxメモ updatedb
投稿日時 : 2007-12-11 04:25
 Ubuntuマシンが何もしてないときに突然HDに激しくアクセスし始めたので、topコマンドで見てみると、updatedbなるプロセスを発見。調べてみると高速ファイル検索コマンドのlocate用のデータベースの構築を行っているようだ。
cronで定期的に実行されるというのは知っていたけど、今までいつやってかよく見てなかった。
/etc/cron.dailyにslocateというシェルスクリプトがある。中を見ると/etc/updatedb.confの設定をもとに/usr/bin/updatedbが実行されていることが確認できる。/etc/updatedb.confではCPU優先度の変更などを行っている。
 
手動で実行する場合は
$ sudo updatedb
-vオプションで処理内容表示。
-uオプションで/(ルート)から処理開始(デフォルト)。
-U pathオプションで処理開始ディレクトリ指定。
-e dirsオプションで除外ディレクトリをカンマ区切りで指定。
 
2007-12-11 04:25 | Linux | Comment(0) | Trackback(0)
音を電波で漏らすヘッドフォン「Music Leak」
投稿日時 : 2007-12-10 22:09
 明治大学の二人の学生さんがわざと音を漏らすヘッドフォン「Music Leak」を発表したらしい。
 
音を電波で漏らすヘッドフォン「Music Leak」 - Engadget Japanese
 
 はじめ意味がわからんと思ったが記事を読んでみるとどうやら、ヘッドフォンから漏れるシャカシャカ音を肯定的に捉え、あえてその音を電波で周囲の対応ヘッドフォンに漏らす、というより放送するというものらしい。
 ヘッドフォン登場以来初めてのアイディアで確かにすごいけど、これもし製品化されたらリアルにジャスラックが徴収に来るんじゃ?街中で使ってたら「再生曲数 x すれ違った人の数」で計算して1億ぐらいの損害賠償請求されたりとか。いや、ヤツらはやりかねない。マジで。
 
ジャスラックとは?
 
2007-12-10 22:09 | News | Comment(0) | Trackback(0)
ジョン・レノンの反戦映画と『Imagine』日本語訳
投稿日時 : 2007-12-09 15:19
 12月8日は元ビートルズのジョン・レノンの27回目の命日。この日に合わせてドキュメンタリー映画「PEACE BED アメリカVSジョン・レノン」が公開開始。
 
レノンの反戦映画があす公開 - 日経WagaMaga
映画「PEACE BED アメリカVSジョン・レノン」オフィシャル・サイト
 
生きていれば67歳、ふつうの人にはできないたくさんのことができたんだろうな。
 
 
 生前、彼はミュージシャンとしての人気と知名度を活かして、泥沼化するベトナム戦争に対する反戦活動を展開していたために、政府に危険視され国外追放処分まで受けている。
そんな彼の遺志は死後20年以上経った9.11テロの際にもまだ確実に生きており、その影響力は衰えてはいなかった。放送各局が報復戦争に向かおうとする政府の意向を汲んでか、あるいは政府の圧力があってか、反戦・平和希求の歌である『Imagine』の放送を自粛し、事実上の放送禁止という状況の中でも、ローカルFM局があえて『Imagine』を流し続けたというニュースを当時に目にすることができた。
 テロから2週間後の2001年9月25日付のニューヨークタイムズには広告主の名前や宣伝文句も説明も何もない1文のみの全面広告が載り、大きな話題を呼んだ。
 
Imagine all the people living life in peace.
想像してごらん、すべての人が平和な日々を送っている姿を
 
これは『Imagine』の歌詞の一部。広告を見た人はこのたった8語でその意味を理解できたはずだ(後日明らかになった広告主は元妻のオノ・ヨーコ。新聞社のインタビューであっさり認めたそうです。)。
 今回の映画はミュージシャンとしてではなく、こういった死後四半世紀たった後も影響力を失わない反戦活動家としてのジョン・レノンに焦点を絞っているようで興味をそそられる。
 
 せっかくなので啓蒙の意味も込めて『Imagine』の動画と歌詞を。日本語への翻訳は自分でやってみました。動詞の数が少なくて意味に幅が出て訳しずらい。ネット上の翻訳がそれぞれ微妙にちがってたり大きくちがってたりするのはそのあたりが原因か?日本で発売されたレコードの歌詞カードにはどう書いてあるのやら。
 
YouTube - Imagine

 
Yahoo!ミュージック - ジョン・レノン - 歌詞 - IMAGINE

『Imagine』

Imagine there's no heaven
It's easy if you try
No hell below us
Above up only sky
Imagine all the people
living for today

Imagine there's no countries
It isn't hard to do
Nothing to kill or die for
And no religion too
Imagine all the people 
living life in peace

You may say I'm a dreamer
But I'm not the only one
I hope someday you'll join us
And the world will live as one

Imagine no possessions
I wonder if you can
No need for greed or hunger
A brotherhood of man
Imagine all the people
Sharing all the world

You may say I'm a dreamer
But I'm not the only one
I hope someday you'll join us
And the world will live as one
『Imagine』 翻訳:itmst

想像してごらん 天国なんてないって
やってみれば簡単なことさ
僕らの足下に地獄なんてない
頭上に空があるだけじゃないか
想像してごらん すべての人が
今日を生きているということを

想像してごらん 国境が無い世界を
そんなに難しいことじゃない
命を奪わなければならない理由も、死ななければならない理由もない世界を
宗教だって同じさ
想像してごらん すべての人が平和な日々を送っている姿を

君は僕のことを夢想家だと思うかもしれない
だけど僕は一人じゃない
いつの日か 君も僕らに加われば
世界はひとつになるんだ

想像してごらん 所有するものなんてない世界を
できるかな?
欲張ったり飢えたりしなくていい世界を
人はみんな兄妹なんだ
想像してごらん すべての人が
世界を平等に分かち合っている姿を

君は僕のことを夢想家だと思うかもしれない
だけど僕は一人じゃない
いつの日か 君が僕らに加われば
世界はひとつになるんだ
いやぁー力のある曲だ。
 
 話はちょっとズレるけど、『Imagine』はジョンの妻のオノ・ヨーコの詩集『grapefruit juice』からインスピレーションを得たらしい。オノ・ヨーコはジョンの妻であるという以前に一人のアーティスト。『grapefruit juice』は普通の詩集ではなく、すべて命令形で指示が書かれている。その指示通りにすることで読者の頭の中に映像や音、感情を喚起させる、というすごい表現手法が用いられている。そして最後にこう指示される。
 
Burn this book after You'v read it
この本を燃やしなさい。読みおえたら。
 
初めて見たときは強烈すぎてかなり圧倒されてしまった。ジョンはちゃんと燃やしたらしいです。さすが。この『grapefruit juice』の中で「想像しなさい(imagine)・・・」という表現がたびたび登場するわけです。興味があればぜひ
 
Amazon.co.jp: Grapefruit: A Book of Instructions and Drawings: 洋書: Yoko Ono
Amazon.co.jp: グレープフルーツ・ジュース: 本: オノ ヨーコ,南風 椎
 
 
 
そういえば数年前にオノ・ヨーコ展東京都現代美術館:MOTであったので観てきた。このとき買った、有名な言葉「WAR IS OVER! IF YOU WANT IT」のポストカードが部屋に貼ってある。この言葉の日本語訳は「戦争は終わる、あなたが望めば」になる。これが意味するところは、「実は戦争を起こしているのは悪い政治家なんかではなく、あなた自身、あなたたち自身の意思、意識、もしくは無意識、または無関心である」ということだと思う。このあたりはノーム・チョムスキーのドキュメンタリー映画「『チョムスキーとメディア』/『チョムスキー 9.11』」とかを観ると考察が深まるかも。  
 
人が作りだしている世界なのだから人が変えられないはずがない。
ジョン・レノンもオノ・ヨーコもそういう一貫したメッセージを伝えようとしているのだと思う。
 
[参考]
ジョン・レノン - Wikipedia
 
2007-12-09 15:19 | Music | Comment(1) | Trackback(0)
ムササビスーツで崖から滑空する動画
投稿日時 : 2007-12-08 10:41
世界には知らないことが多い。ムササビっぽいスーツを着て崖から飛び降りて岩肌すれすれを滑空する狂気なスポーツがあるようです。元ネタはGIGZINE。
ムササビっぽいスーツで大滑空するド迫力ムービー - GIGAZINE
 
リンク先の動画が削除されたようなので検索。何度見てもやっぱりありえない。ちょっと間違うとぐちゃっと即死間違いなし。
 
道路の数メートル脇をすさまじいスピードで滑空してます。
 
 
もうひとつ雪山で。
 
ジェットエンジンを背負って飛ぶってのもある。
http://jp.youtube.com/watch?v=SHYXrqoS08o
 
2007-12-08 10:41 | Entertainment | Comment(0) | Trackback(0)
Softbank X01T 発売日決定
投稿日時 : 2007-12-07 14:13
x01t black closex01t black open
 
X01Tの発売日が明日の12月08日に決定したようです。
いやぁ~長かった。この機種は2007年夏モデル。発表は2007年5月22日。それが「近日発売」のまま何の情報もなしに今に至る。海外ではとっくの昔にG900として発売されている。それを日本向けにカスタマイズするだけなはずなのに何をやっていたのか。・・・まあ言いたいことはいっぱいあったけど発売日が決まったからいいや。
 
プレスリリース2007年度 | ソフトバンクモバイル株式会社
 
とりあえず一番気になる特徴は
・Microsoft® Windows Mobile® 6 Professional Edition
・無線LAN(IEEE802.11b/g)
・Internet Explorer® Mobile
・Windows Media Player 10 Mobile
・3Gハイスピード対応
 
自宅サーバと連携してIE上で動くメディアプレーヤを作ってるんですが、これがX01Tで動作するかがとても気になる。とりあえず上の4つがあればたぶんいけるはず。

他にも
・3インチワイドVGA(480×800ドット)液晶
・タッチスクリーン対応
・QWERTYキーボード
・指紋認証
などなど
 
詳細なスペックは以下
プレスリリース2007年度 | ソフトバンクモバイル株式会社
 
問題点は分厚いことと維持費がかさむということか。パケット定額系のプランに入らないと即死しそう。無料アクセスポイント探して無線LAN経由でのみパケット通信すればいいんだろうけど。まあまだ買うと決めたわけでもないんですが。ネットでの情報が一通り出そろうまでは様子見。
 
その他のメディアの報道
ソフトバンク、Windowsケータイ「X01T」を8日から販売開始 | 携帯 | マイコミジャーナル
ソフトバンク、Windows Mobile 6搭載「X01T」を8日発売
セキュリティ対応のハイスペックスマートフォンX01Tがついに発売 - ITmedia エンタープライズ
 
 
2007-12-07 14:13 | News | Comment(0) | Trackback(0)
FONが無線LANルータ無料配布キャンペーン
投稿日時 : 2007-12-05 11:01
FON logo
 
FONがサービス開始1周年を記念して無線LANルータの無料配布キャンペーンを実施するみたいです。
 
無線LAN共有サービス「FON」、12月8日からルータ無料キャンペーンを実施 - GIGAZINE  
(祝) FON一周年記念 – ラ・フォネラ無料キャンペーン!(メールより引用)
【キャンペーン概要】
内容:FONルーター「ラ・フォネラ」無料進呈
期間:12月8日(土)、12月9日(日)
取得方法:
(1)FONショップ(https://www.fonshop.jp/
ラ・フォネラ:無料、ラ・フォネラ+:500円(別途送料・手数料945円(税込み)が必要となります、0時~24時までの申し込み分)
(2)九十九電機9店舗
ラ・フォネラ:500円、ラ・フォネラ+:1,000円(税込み、営業時間内に限り)
 
FONというのは、自分の家の回線を専用の無線LANルータでアクセスポイント化し、それを他のFONメンバーに無償提供する代わりに、自分も他のFONメンバーの無線LANを無償で利用できるというもの。一般企業がアクセスポイントを設置する場合どうしても街中に集中しがちだけど、FONなら住宅街もカバーできる。
 
まあ1年前のサービス開始時の無料配布キャンペーンで手に入れて以来ずっと設置してるうちのFONには誰も接続してきたことないんですが(笑)。
通りから道一本入ったマンションなんで電波が届かないっぽいってのはあるのかなー
 
ユーザ数もいつのまにかすごい増えてる
(祝) FON一周年記念 – ラ・フォネラ無料キャンペーン!(メールより引用)
FONは、12月1日現在、世界で会員数587,661人/アクセスポイント207,460箇所、日本では43,745人/アクセスポイント24,564箇所を保有し、日本は今年の10月より世界で一番多くのFONのアクセスポイントを保有する国となりました。
 
どこにFONが設置してあるかはGoogleマップとマッシュアップしたサイトで検索することができる。公式サイトのFON Mapsが公開当初くそ重いということもあって、有志の人たちが独自に開発したバージョンが複数あり、それぞれちょっとずつ仕様や軽さが違う。
 
■FON Maps
FON Maps (公式)
FON Active Router Viewer
FON map|FON×excite フォン×エキサイト
FON_AP検索(携帯版)
Simple FON Maps - 近くの FON AP を探そう!  
 
■設定その他の有用な情報
2ch過去スレ - FoNまとめwiki
 
2007-12-05 11:01 | News | Comment(0) | Trackback(0)
[Ubuntu] smbclient使用詳細メモ
投稿日時 : 2007-12-04 13:43
smbclientの使い方自体は難しいわけではないけどWindowsがおかしな挙動をするおかげでちょっとはまったのでそのあたりを使い方と合わせてメモ。
 
■環境
以下の環境で実行している。
環境
[ネットワーク環境]
mv1c3e(Ubuntu Linux)    192.168.0.3/24
c610(WindowsXP)         192.168.0.2/24

[Windowsのユーザ]
itmst  パスワード設定なし
itmst2 パスワード設定あり

[Windowsのワークグループ名]
WORKGROUP

[Windowsの共有フォルダ]
D:\desktop
D:\
Z:\

[共有フォルダのアクセス制限]
デフォルトで許可ユーザとして「Everyone」が指定されている。
 
Ubuntu7.10に標準インストールされているSamba関連パッケージ
samba-common   サーバ・クライアントともに必要とする基本パッケージ
smbclient       CUIクライアント
libsmbclient    他のアプリケーション用共有ライブラリ
これだけ入っていればとりあえずsmbclientでWindowsの共有フォルダにはアクセスできる。
 
■設定
Windowsのワークグループの設定をする。Windows側に合わせて「WORKGROUP」というワークグループ名に変更。
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP
 
■Windows側で公開されている共有フォルダを確認
以下のコマンドで公開されているフォルダを確認する。
書式
$ smbclient -L <コンピュータ名 or IPアドレス> -U <ユーザ名>
 
共有フォルダを確認
itmst@mv1c3e:~$ smbclient -L c610 -U itmst
Password: 
Domain=[C610] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       Remote IPC
        D$              Disk      Default share
        D               Disk      
        Z$              Disk      Default share
        Z               Disk      
        desktop         Disk      
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
Domain=[C610] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
-Lオプションで公開フォルダの一覧を取得、-UオプションでWindowsのユーザ名を指定。 パスワードを求められるが、Windows側のitmstにはパスワードが設定されていないので何も入力せずにEnterでOK。ユーザ名を指定しなかった場合は、
smbclientコマンド:ITpro
このオプションを指定しない場合は環境変数「USER」と「LOGNAME」を順番に調べて,その設定をユーザー名として指定する。環境変数もない場合はユーザー名としてGUESTを使う。
ということなので、Linux側のユーザ名とWindows側のユーザ名を統一しておけば楽だしわかりやすい。
 
Default share
Sharenameが「desktop」「D」「Z」となっているものがWindows側で手動で共有設定したフォルダ。「C$」「D$」「Z$」はコメントにある通り「Default share」でドライブのルートが自動的に公開されているもの。このフォルダにアクセスするには、Windows側でユーザとして登録されており、かつパスワードが設定されていなければならない。これを知らなくて少しはまった。

 
謎の仕様1
もしここで-Uオプションでパスワード設定がされているitmst2を指定した場合は、正しいパスワードを入力しなければログオンに失敗する。 ここまでは当たり前のことだが、適当なユーザ名、例えばhogeを指定した場合、パスワードは入力しなくても、適当に入力してもログオンできてしまう。つまり正規ユーザであってもパスワードを忘れると不正規ユーザよりもログオンが難しくなってしまう。なんだ?この仕様。
 
■Windowsの共有フォルダにsmbclientで接続する
書式
$ smbclient //<コンピュータ名 or IPアドレス>/<共有名> -U <ユーザ名>
 
itmst@mv1c3e:~$ smbclient //c610/D -U itmst
Password: 
Domain=[C610] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
  desktop                         D        0  Tue Dec  4 12:25:28 2007
  down                            D        0  Mon Nov 26 13:14:33 2007
  md5.bak.js                      A    10353  Wed Oct 31 12:01:44 2007
  md5_cscript.js                  A    10794  Wed Oct 31 13:32:44 2007
  MyProgram                       D        0  Mon Sep 17 14:09:40 2007
  VMware                          D        0  Sat Nov 17 12:18:43 2007
  wallpaper                       D        0  Sat Nov 10 10:15:02 2007

                46186 blocks of size 524288. 16414 blocks available
謎の仕様2
やはりここでもUオプションでパスワード設定がされているitmst2を指定した場合は正しいパスワードを入力しなければログオンに失敗する。
itmst@mv1c3e:~$ smbclient //c610/D -U itmst2
Password: ←わざと間違ったパスワードを入力
session setup failed: NT_STATUS_LOGON_FAILURE
にもかかわらず、適当なユーザ名とパスワードを入力するとログオンできる。
itmst@mv1c3e:~$ smbclient //c610/D -U hoge
Password: ←適当なパスワードを入力
Domain=[C610] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> ls
  desktop                      D        0  Tue Dec  4 12:25:28 2007
  down                         D        0  Mon Nov 26 13:14:33 2007
(省略)
別にセキュリティホールとかなわけじゃないけどなんか気持ち悪い。
 
■ログオン後の操作
ログオンした後の操作はlsで一覧、cdでディレクトリ移動、getでファイルダウンロード、putでアップロードなどFTPコマンドとほぼ同じ。スペースを含むパスの場合は「"」(ダブルクォーテーション)で囲む必要がある。
 
smbclientコマンド:ITproの「対話型モードでの利用」の項を参照。
 
 
[参考]
Sambaの設定 | LIVE FREE OR DIE.
 
2007-12-04 13:43 | Linux | Comment(0) | Trackback(0)
ランレベルとサービス起動プロセスのまとめ
投稿日時 : 2007-12-04 03:07
現在勉強用に使っているUbuntu7.10には一般的なLinuxの起動プロセスで重要な役割を果たす/etc/inittabが存在しないことが分かった。起動を高速化するためにupstartという新しい仕組みを導入したらしく、各種設定ファイルは/etc/event.dディレクトリに移動している。
2007年12月現在、upstartを採用しているディストリビューションはUbuntu以外には皆無なようでネット上の情報が極端に少ない。
Linux初心者がいきなり特殊な仕組みを少ない情報で理解するのは難しい気がしたので、とりあえず一般的なディストリビューションで採用されている/etc/inittab系の仕組みをまとめることにする。
 
■RedHat系とDebian系での/etc以下のディレクトリ構造の違い
RedHat系とDebian系では/etc以下のディレクトリ構造が微妙に違っている。 RedHat系では「/etc/rc.d」配下に「rc0.d」や「rc1.d」、「init.d」、「rc」、「rc.sysinit」などがあるのに対して、Debian系では「/etc」直下にそれらのファイル、ディレクトリが存在している。以下の説明ではRedHat系でのディレクトリ構造で説明している。
 
■/etc/inittabの役割
システムが起動すると、まずinitというプロセスが立ち上がる。initは/etc/inittabの設定を元にシステムを初期化する。
 
■/etc/inittabの書式
<id>:<ランレベル>:<アクション>:<プロセス>
 
「:」(コロン)区切りの各フィールドの意味
id          inittab内のエントリーを識別する名前(2~4文字)
ランレベル  エントリが実行されるランレベル(省略で全レベルで実行)
アクション  動作の種類
プロセス    実行するプロセスのパス
アクションの種類
initdefault  デフォルトのランレベル
sysinit      起動時にすべてのランレベルで実行
boot        sysinit実行後にすべてのランレベルで実行
bootwait    sysinit実行後すべてのランレベルで実行、initはその終了まで待機
ctrlaltdel  Ctrlキー、Altキー、Deleteキーを同時に押したときに実行
wait        一度だけ実行され、initはこの処理が終了するまで待機
respawn     指定したプロセスが終了した場合に再起動
 
■デフォルトランレベル
/etc/inittab
id:5:initdefault:
の行でデフォルトのランレベルが決定されている。書式に照らし合わせるとidが「id」、ランレベルが「5」、アクションが「initdefault」、プロセスが「空白」になっている。この設定だとランレベル5で起動される。ランレベルは0~6まで。各ランレベルは次のような意味になる。
ランレベル一覧
0      停止
1      シングルユーザモード
2      NFSなしのマルチユーザモード(NFS以外は3と同じ)
3      テキストログインのマルチユーザモード
4      未使用(ユーザ定義用)
5      グラフィカルログインのマルチユーザモード
6      再起動
デフォルトランレベルを0や6にすると起動できなくなるので注意。
UbuntuやFedoraではデフォルトでGUIが起動するのでランレベル5で起動していることになる。
 
■ハードウェアの設定など
/etc/inittab
si::sysinit:/etc/rc.d/rc.sysinit
第二フィールドのランレベルが空白だがこれはランレベルとは無関係にシステムのブート時に/etc/rc.d/rc.sysinitが実行されることを意味する。
/etc/rc.d/rc.sysinitは日付時刻やキーマップの設定、基本的なファイルシステムのマウントなどのシステムの初期化を担当。
 
■ランレベルに応じたサービスの制御
ランレベルごとに起動するサービス、終了するサービスを以下の設定で制御している。
/etc/inittab
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
書式に照らし合わせると、例えば1行目だとエントリID「l0」はランレベル「0」のときに「etc/rc.d/rc」プロセスを引数「0」を与えて呼び出す、という意味になる。
 
□/etc/rc.d/rcの役割
/etc/rc.d/rcはbashスクリプトで、受け取った引数(ランレベル)に応じて、「/etc/rc.d/rc0.d」や「/etc/rc.d/rc1.d」のようにランレベルごとにディレクトリ分けされたサービス制御スクリプトの一覧を取得し、それらに適切な引数を与えて実行することで、サービスの終了/開始を一元的に管理している。
ここで/etc/rc.dディレクトリのファイル一覧を確認しておく。
/etc/rc.dのファイル一覧
$ ls -l /etc/rc.d
合計 112
drwxr-xr-x 2 root root  4096 2007-12-04 01:03 init.d
-rwxr-xr-x 1 root root  2464 2007-07-18 00:14 rc
-rwxr-xr-x 1 root root   220 2003-06-24 05:02 rc.local
-rwxr-xr-x 1 root root 25880 2007-10-09 23:55 rc.sysinit
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc0.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc1.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc2.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc3.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc4.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc5.d
drwxr-xr-x 2 root root  4096 2007-11-30 10:33 rc6.d
/etc/rc.d/rc<ランレベル>.dに収められているファイルは特殊な命名規則を持っている。/etc/rc.d/rc5.dディレクトリを例に見てみる。
/etc/rc.d/rc5.dのファイル一覧
$ ls /etc/rc.d/rc5.d
K01smartd                    K89pand           S26udev-post
K02NetworkManager            K89rdisc          S27messagebus
K02NetworkManagerDispatcher  K91capi           S27setroubleshoot
K05saslauthd                 S00microcode_ctl  S28autofs
K10psacct                    S05kudzu          S44acpid
K15gpm                       S06cpuspeed       S50bluetooth
K15httpd                     S08ip6tables      S55sshd
K20nfs                       S08iptables       S58ntpd
K24irda                      S09isdn           S80sendmail
(省略)
/etc/rc.d/rc<ランレベル>.dの命名規則
K<番号><スクリプト名>
S<番号><スクリプト名>
「K」で始まるファイルは終了するサービス、「S」で始まるファイルは開始するサービス。「番号」は処理の優先度。小さな番号であるほど先に処理される。その後に続く「スクリプト名」は呼び出されるスクリプト名。
ここで重要な点はこれらのファイルはすべて/etc/rc.d/init.d内のファイルへのシンボリックリンクだということ。
/etc/rc.d/rc<ランレベル>.d内のファイルはシンボリックリンク
$ ls -l /etc/rc.d/rc5.d
lrwxrwxrwx 1 root root 13 2007-11-22 22:57 K15gpm -> ../init.d/gpm
lrwxrwxrwx 1 root root 15 2007-11-22 23:12 K15httpd -> ../init.d/httpd
lrwxrwxrwx 1 root root 13 2007-11-22 23:14 K20nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 14 2007-11-22 23:02 K24irda -> ../init.d/irda
lrwxrwxrwx 1 root root 14 2007-11-22 23:11 S98cups -> ../init.d/cups
lrwxrwxrwx 1 root root 15 2007-11-22 23:02 S90crond -> ../init.d/crond
lrwxrwxrwx 1 root root 15 2007-11-22 14:54 S90smolt -> ../init.d/smolt
lrwxrwxrwx 1 root root 13 2007-11-22 23:02 S95atd -> ../init.d/atd
(一部抜粋)
実際に/etc/rc.d/init.dを見てみると以下のようにサービスを制御するスクリプトの実体が格納されている。
/etc/rc.d/init.d内にある個々のサービス制御スクリプト
$ ls /etc/rc.d/init.d
ConsoleKit                dund        mdmonitor      rpcbind
NetworkManager            firstboot   messagebus     rpcgssd
NetworkManagerDispatcher  functions   microcode_ctl  rpcidmapd
acpid                     fuse        multipathd     rpcsvcgssd
anacron                   gpm         netconsole     rsyslog
atd                       haldaemon   netfs          saslauthd
auditd                    halt        netplugd       sendmail
autofs                    hsqldb      network        setroubleshoot
avahi-daemon              httpd       nfs            single
bluetooth                 ip6tables   nfslock        smartd
btseed                    iptables    nscd           smolt
bttrack                   irda        ntpd           sshd
capi                      irqbalance  pand           udev-post
cpuspeed                  isdn        pcscd          winbind
crond                     killall     psacct         wpa_supplicant
cups                      kudzu       rdisc          ypbind
cups-config-daemon        lm_sensors  restorecond    yum-updatesd
これらのファイル名の頭に「K」か「S」、続いて優先度番号をつけたファイル名で/etc/rc.d/r c5.d以下にシンボリックリンクとして格納されているということになる。
 
□/etc/rc.d/rcの実際の処理
では/etc/rc.d/rcが実際どのように振る舞うかを見ていく。
/etc/rc.d/rcは/etc/inittabで設定された通り、ランレベルが変更された時に変更後のランレベルを引数に呼び出され、その引数をもとに、「/etc/rc.d/rc<ランレベル>.d」のうちどのディレクトリのファイル一覧を取得するか決定する。一覧が取得できたら、そのファイル名を解析し、上記の説明の通り、終了するのか開始するのか、優先度はいくつで制御スクリプトの名前は何かを判定する。
 
例えば「/etc/rc.d/rc5.d/S98cups」の場合なら、ランレベルが5になったとき、ファイル名の先頭が「S」ということから開始、優先度は「98」、スクリプト名は「cups」なので、優先度97以下のスクリプトが実行された後、
/etc/rc.d/init.d/cups start
が実行される。
「/etc/rc.d/rc5.d/K15httpd」の場合なら、ランレベルが5になったとき、ファイル名の先頭が「K」ということから終了、優先度は「15」、スクリプト名は「httpd」なので、優先度が14以下のスクリプトが実行された後、
/etc/rc.d/init.d/httpd stop
が実行されることになる。
 
これらは手動で
# /etc/rc.d/init.d/cups start
# /etc/rc.d/init.d/httpd stop
としたり、
# service cups start
# service httpd stop
などと実行したのとまったく同じこと。
 
このようにランレベルの変更イベントを受けて自動的にサービスの開始/終了を実行する仕組みになっている。
 
■ランレベルを手動で変更する
起動後にランレベルを手動で変更することもできる。ランレベル5でGUI環境も起動した状態から、NFSありのCUIモードであるランレベル3に変更するには以下のコマンドを実行する。
# telinit 3
 
2007-12-04 03:07 | Linux | Comment(0) | Trackback(0)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。