February 2007

February 21, 2007

このエントリーをはてなブックマークに追加
WEB+DB PRESS vol.37弾さんのコーナーに、#!shebang.jp さん高速インターチェンジ研究会さんと僕とで出させてもらいました。

WEB+DB PRESS Vol.37
WEB+DB PRESS 編集部
技術評論社


つけヒゲと鼻メガネをつけて、サスペンダーでズボンを吊って対談し、弾さんの声まね (一部の人達の間では、俺がやる弾さんのモノマネは「激似」と評判) をしようと思ったのですが、技術評論社さんのほうでテープ起こしをする時に、どっちがどっちの声かわかんなくなっちゃって原稿にならなくて大変だろうな…という理由でやめました。

僕なんか、あんまり喋ってないし、どっちかっていうと豚足インターフェースが Blog みたいに何か変なこと言い出すんじゃないかとかヒヤヒヤしながら、彼の監視役的に参加してます。そもそも「小飼弾のアルファギークに逢いたい」というコーナー名なのに俺はアルファギークなのかどうか微妙だなとか色々考えさせられました。

今回は多くの連載が最終回を迎えていますが、今回も読み応えがありそうです。
まだ、あんまりじっくりは読んでませんが、Linux ロードバランサ構築・運用ノウハウとかは、個人的に面白そうなネタなんでじっくり読みたいなと思いました。

テスク
あと、デスクの稲尾さんの肩書が、今号からスクに変わったようです。
以前 mixi 日記で肩書募集してたのを思い出しました。


nipotan at 18:50 | Comments(0) | 技術 
このエントリーをはてなブックマークに追加

February 19, 2007

このエントリーをはてなブックマークに追加
subtech - Pink Blossom Diary ( ̄―+ ̄) - 一度 tty から起動したプロセス
をバックグラウンドで動かしてシェルから抜けた後も動かし続けるにはどうしたらいいんだろ。時間がかかる処理を screen を起動させずフォアグラウンドで実行しちゃって ssh 切れてイヤン、ということが時々ある。

一度 C-z で suspend させてから切り離しさせることってできるのかしら。あと標準入出力の差し替えってできるのかしら。

追記

typoさん情報(thx!)に disown (bash/zsh 組み込み)でいけることを教えてもらった!あとは標準出力/エラー出力をどうにかできれば…。
bash と zsh だと disown というのなんですね。初めて知りました。
ちなみに csh、tcsh、ksh あたりだと C-z で suspend したプロセスをどうこうするのには fg, bg, stop あたりを使います。

#!/bin/sh

i=1
max=100
while [ $i -le $max ]
do
  date >> hoge.txt
  sleep 1
  i=`expr $i + 1`
done
こんなん書いておいて、
% chmod +x foo.sh
% ./foo.sh
とかしたら、あーしまった、これすげー長いプロセスだったって時、あわてて Ctrl+Z を押すと
^Z
Suspended
とか出る。 suspend したプロセスの一覧は、
% jobs
[1]  + Suspended                     ./foo.sh
と、jobs コマンドを使います。ステータスが Suspended になってる間は、プロセス自体は生きてますが実行はされてないかんじ。
% ./foo.sh
^Z
Suspended
おっと、ヒストリからさっきのコマンド出して、また実行して慌てて Ctrl+Z で suspend してしまった。
% jobs
[1]  - Suspended                     ./foo.sh
[2]  + Suspended                     ./foo.sh
suspend されたコマンドの番号の後ろに + がついてるのが、current job って扱い。
バックグラウンドに移す場合は、
% bg
と打つと、
[2]    ./foo.sh &
と出ます。
% jobs
[1]  + Suspended                     ./foo.sh
[2]    Running                       ./foo.sh
お、よくよく考えたら、[1] のほうをバックグラウンドに移したかったんだった。
ってことで、今 [1] が current job なので、
% bg
[1]    ./foo.sh &
jobs コマンドで見てみると
% jobs
[1]    Running                       ./foo.sh
[2]  + Running                       ./foo.sh
[2] は余計だったので suspend にします。
% stop %2
[2]  + Suspended (signal)            ./foo.sh
% jobs
[1]  - Running                       ./foo.sh
[2]  + Suspended (signal)            ./foo.sh
やっぱ、suspend じゃなくて、終了させたいので、それぞれの pid を指定して kill したりして。
% jobs -l
[1]    50084 Running                       ./foo.sh
[2]  + 50089 Suspended (signal)            ./foo.sh
% kill 50089
[2]    Terminated                    ./foo.sh
% jobs
[1]  + Running                       ./foo.sh
とりあえず、こんなんしておくと、suspend になってる間は、date コマンドが実行されていないのがわかります。

ちなみに、
% ./foo.sh &
[1] 50825
% ./foo.sh &
[2] 50828
% ./foo.sh &
[3] 50834
% jobs
[1]  + Running                       ./foo.sh
[2]  - Running                       ./foo.sh
[3]    Running                       ./foo.sh
こんな風にバックグラウンドで実行されているうち、[3] だけを、やっぱりフォアグラウンドに持ってきたい場合は、
% fg %3
./foo.sh
みたいにします。
もちろん、ウザくなったら
^Z
Suspended
% jobs
[1]  - Running                       ./foo.sh
[2]    Running                       ./foo.sh
[3]  + Suspended                     ./foo.sh
% bg
[3]    ./foo.sh &
みたいにすれば良し。

「標準入出力の差し替え」に関しては俺もわからないんで知りたいですねー。


余談ですが、
Mitsuki's Magic Laboratory / 2007/02/19
 あれ、うち(FreeBSD)だと、バックグランドで動かしたままシェル終了しても普通にそのまま動いてるけどなあ(tiarra はそうやって常駐してる)……と気になって man してみると、bash ではデフォルトでシェル終了時に子プロセスに SIGHUP 送りまくるのに対して、(t)cshではデフォルトでは SIGHUP しないらしい。そういうことか……。
その man の出典が知りたいんですが、うちの環境では全然そんな風にはならなかったですね。。。
bg した後なら抜けても問題なく実行され続けられますが、C-z して suspend なまんまで「動いている」なんて状況にはならなかったです。
ついでに言えば、suspend されている job が存在している場合、シェルから抜けようとすると
% ^D
There are suspended jobs.
とか、一旦怒られて、それでも無視してもう一度抜けようとしてみると、シェルから抜けられます。その代償として suspend されているプロセスは全て落とされます。

こっちで試した環境は
% echo $OSTYPE
FreeBSD
% echo $SHELL
/bin/tcsh



うーむ、何か違うんでしょうか。

nipotan at 18:19 | Comments(2) | TrackBack(2)
このエントリーをはてなブックマークに追加

February 15, 2007

このエントリーをはてなブックマークに追加
※ 二度目の公開というタイトルにしましたが、三度目は予定していません。

2 年ぐらい前に、本邦初公開!電話番号の正規表現というネタで、Regexp::Assemble という CPAN モジュールを紹介したことがありました。
あのモジュールを使うことによって、日本で初めて、電話番号を正規表現で表わすという試みをしてみたのですが、該当エントリに書いた通り、
Number::Phone::JP の正規表現が今日現在でも正しいのかどうか等、未検証部分が異常に多いので、自己責任でお使いくださいw
というものでした。

その後、Number::Phone::JP モジュール自体も、更新が面倒臭そうなものなせいか、全然更新されていなかったのですが、何やら今日更新版が出ている模様。
どうも作り直したっぽいかんじ。

で、早速ですが、最新版の正規表現テーブルを用いて、最新版の電話番号にマッチする正規表現を作ってみました。 続きを読む

nipotan at 22:48 | Comments(0) | TrackBack(0) | 技術 
このエントリーをはてなブックマークに追加