2008/08/30(Sat)SeaTools
2008/08/30 20:15
そのLinux版の扱い方メモ。
ここからダウンロード可能。ページ下部の"Linux コマンドライン版"を選択。
seatools_cli.tarがダウンロードされる。
# tar xvf seatools_cli.tar # ./st -l Drive information: /dev/sg0 ATA ST380021A 3.05 156301487 blocks # ./st -i /dev/sg0 /dev/sg0 Vendor = ATA Product = ST380021A Version = 3.05 Serial Number = Copyright = SCSI Firmware = t Servo RAM Release = 9 Servo ROM Release = !5v Servo RAM Date = � Servo ROM Date = E Blocksize = 512, Highblock = 156301487, Capacity = 78151 MB -this is a Seagate drive -this drive does not support DST -Mode Page Settings [current value (default)]: -WCE bit = 1 (0) -RCD bit = 0 (0) -AWRE bit = 1 (0) -ARRE bit = 0 (0) -DExcpt bit = 0 (0) -Number of cache segments = 0 (0)システムからは/dev/sdaとして見えているが、SeaToolsに渡す引数は/dev/sg0のようなデバイスなのでそこを注意。
ちなみにこのツールは以下のようなオプションがあるらしい。
サーバーとして動作中なのでファーム書き換え等は出来ないが、トラブルが起こった時には試してみようかな。
Usage: SeaTools Enterprise [-option][variable][device] Allowed options are: -l list all attached SCSI disks -i display drive Inquiry information -I display drive Inquiry information for all SCSI devices -t ### execute ###% (10% - 100%) short Drive Self Test (DST) ex: st -t 10 /dev/sga execute 10 % of the short Drive Self Test (DST) -T ### execute ###% (10% - 100%) long Drive Self Test (DST) ex: st -T 20 /dev/sga execute 20 % of the long Drive Self Test (DST) -s stop Drive Self Test (DST) -g ### execute ###% (1-% - 100%) generic short test for legacy & non-Seagate drives ex: st -g 10 /dev/sga execute 10 % of the short legacy test -G generic long test (sequential verify test of entire drive) -r generate Seagate RMA form -v show Seatools version and licence agreement example: ./st -i /dev/sga displays inquiry for /dev/sga Advanced options (some cause data loss): -Marg Drive Preferences (mode page) change Note: Use -i INQUIRY option to display the supported & current settings. Performance Mode (PM) -Mpmon/off desktop/server PM bit Write Cache Enable (WCE) -Mwceon/off set/clear WCE bit Read Cache Disable (RCD) -Mrcdon/off set/clear RCD bit Just In Time (JIT) -Mjitdefault set all JIT bits, factory default -Mjit1on set only JIT bit 1, clears any others -Mjit2on set only JIT bit 2, clears any others Automatic Write Rallocation Enable (AWRE) -Mawreon/off enable/disable AWRE bit Automatic Read Rallocation Enable (ARRE) -Marreon/off enable/disable ARRE bit Disable Exception Control (DExcpt, SMART logging) -Mdexon/off disable/enable DExcpt bit Disable Loop Master (DLM, fibre channel only) -Mdlmon/off disable/enable DLM bit Disable Target Oriented Loop Initialization (DTOLI, fibre channel only) -Mdtolion/off disable/enable DTOLI bit Number of Cache Segments -Mcache# set # cache segments ex: -Mcache8 set # of cache segments to 8 -F default low-level scsi format Usage: [-option] [variable] [device] -d file firmware download ex: st -d fwfile /dev/sga download firmware file fwfile into /dev/sga -C ### capacity change ex: -C 1234567890 set high blocks to 1234567890 (zero based) ex: -C max change capacity to factory maximum -B ### sector size change followed by a format ex: -B 1024 change to 1024 bytes/sectorついでにUDMA5(ATA100)で動作中のこいつのベンチマーク。
# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 288 MB in 2.02 seconds = 142.85 MB/sec Timing buffered disk reads: 102 MB in 3.02 seconds = 33.76 MB/sec
2008/08/30(Sat)Plagger on Fedora 8
2008/08/30 15:13
まず、repoファイルをwget……してもいいのだが、rpmがあるのでこれを利用
$ wget http://pub.woremacx.com/worepo/deprecated/worepo-release-7.rpm # sudo rpm -ivh worepo-release-7.rpm # ls /etc/yum.repos.d/wo.repo /etc/yum.repos.d/wo.repowo.repo内のアドレスが変わっているようなので、修正。
# vi /etc/yum.repos.d/wo.repo - baseurl=http://pub.woremacx.com/worepo/fedora7/i386 + baseurl=http://pub.woremacx.com/worepo/deprecated/fedora7/i386で、
# yum install perl-Plagger .... Transaction Summary ====================================================== Install 314 Package(s) Update 2 Package(s) Remove 0 Package(s) Total download size: 45 M Is this ok [y/N]: y ... Complete!という感じで物凄いインストール。
仮にcpanで同じインストールをするとして、314パッケージもmakeの面倒見るなんて御免だ。パッケージに頼るに限る。
で、無事動いてます。
2008/08/30(Sat)CPANをサクサク動くように
2008/08/30 3:50
さて、PerlModuleを入れるためcpanを…とやってると、どうもトロい。Fetching...とかで数十秒近く待たされた挙句FTPセッションを張るのに失敗。
どうやらftp.perl.orgが忙しいようなので、ミラーサーバーに切り替えてみる。
/usr/lib/perl5/5.8.8/CPAN/Config.pmに対して、以下のようなURLListを設定。
$CPAN::Config = { 'urllist' => [q[ftp://ftp.kddilabs.jp/CPAN/]], };うむ。速くなった。
cpan中
やっぱCPANだめだ、コケすぎ。依存関係の解消ということで、ひたすらEnter連打待ちなのも如何なものか。
そしてmakeに失敗するんですよね、わかります。
→結局3万2千行も標準出力に吐いといて、最終的に失敗。
あーもう、yumが便利すぎる。
でも、ニッチな物は標準のリポジトリに追加されてないんだよなぁ……。
リポジトリを追加する方向で考えよう。
2008/07/30(Wed)screenでデタッチできん
2008/07/30 16:02
というのも、サーバー側のFTTHモデムが瞬停に耐えられず再起動し、IPアドレスが変わってしまうからだ。まぁこれはしょうがない。
上位DNSまでのDNS浸透は速いものの、やっぱり末端に広がるには時間がかかるようなので、とりあえずhostsファイルに書いてやったり*1で対応するのはいいとして、GNUのscreenがattached状態になったままで再アタッチできない事がたまにある。
いつも、気がついたらdetachedになってるんだが。
ちなみに、autodetachはonである。
[kero@spinel](2)$ screen -ls There is a screen on: 26323.pts-0.spinel (Multi, attached) 1 Socket in /var/run/screen/S-kero.となったので、しょうがない、リモートデタッチするかと。
[kero@spinel](3)$ screen -d [26323.pts-0.spinel detached.]が。
[kero@spinel](4)$ screen -ls There is a screen on: 26323.pts-0.spinel (Multi, attached) 1 Socket in /var/run/screen/S-kero.何度やってもscreen -dはdetachedと出るばかりで直らん。
[kero@spinel](9)$ screen -r There is a screen on: 26323.pts-0.spinel (Multi, attached) There is no screen to be resumed.resumeもできん。
[kero@spinel](10)$ screen -D [kero@spinel](11)$ screen -D
- Dにしたら今度は反応が返ってこない。Ctrl+Cが効くだけマシかもしれんが……。
と、この記事を書いている間に
[kero@spinel](12)$ screen -ls There is a screen on: 26323.pts-0.spinel (Multi, detached) 1 Socket in /var/run/screen/S-kero.となっていた。
→解決編をご覧ください。
追記: 最後に打ったコマンドをウィンドウタイトルに
検索してたらこちらで見つけた。.screenrcに
shelltitle "$ |bash"と付け足して、.bashrcを
OLD_PS1=...(元の設定)... SCREEN_TITLE='\[\033k\033\\\]'; PS1="${SCREEN_TITLE}${OLD_PS1}"てな具合。OLD_PS1の部分は無論、埋め込みでも構わない。
zsh使いの場合は、↑サイトを参考に。
2008/07/11(Fri)便利コマンド on Linux
2008/07/11 18:19
Linuxを使い始めたときからbash一筋な私ですが、.bashrcに色々と拡張関数を作って便利に使っているので、少し紹介してみます。
コンパイラ系 省略コマンド
コンパイルしたら自動的にそのプログラム名で出力して欲しい!ってことで、N先生に作り方を教わったコマンド。a.outのままだと、後からみてどのプログラムのコンパイル結果なのか分からないし、既存のと被る可能性があるからなぁ。
- Usage: $ gcc prog.c
# gcc alias gcc='mygcc' function mygcc(){ pn=`echo $1 | sed -e 's/\.cp\?p\?//'` command gcc -Wall -lm -o $pn $* } # g++ alias g++='mygpp' function mygpp(){ pn=`echo $1 | sed -e 's/\.cpp//'` command g++ -Wall -lm -o $pn $* } # cc alias g++='mycc' function mycc(){ pn=`echo $1 | sed -e 's/\.c//'` command cc -Wall -lm -o $pn $* }
プログラムコンパイルから出力をファイルに書くまで一発なコマンド
まぁごくたまに使いますかねぇ。大量のinputをプログラムに流し込んだ結果をとりたいときとか。- Usage: $ start prog.c input.dat
function start(){ pn=`echo $1 | sed -e 's/\.c//'` command cc -Wall -lm -o $pn $1; ./$pn $2 &> $pn.result; cat $pn.result }
ファイルの中をぐるぐる検索してくれるコマンド
でも、最近は$ grep -r HOGE ./ で事足りるじゃん…と思って使ってない。- Usage: $ exgrep HOGE
# File grep function exgrep(){ command find ./ -type f -exec grep -l "$1" {} \; }
ディレクトリ内のtarballを一気に解凍するコマンド
さっき必要だったので作ってみた。$ tar zxvf *.tar.gzでディレクトリ内の全ての.tar.gzを解凍してほしかったんだけど(apacheログの日ごとにtarballしていたものを解凍したかった)、いちいちforとか打つの面倒だなと思って。
- Usage: $ extar *.tar.gz
# Expand decompress .tar.gz function extar(){ for TGZ in $@ do tar zxvf ${TGZ} done }
どーでもいいけど、シェルスクリプトってifの対がfiだったり、caseの対がesacなのに、doの対はodじゃないんだね^^;
追記: bashの関数名に+とか書くと怒られる
今まで何ともなかったfunction g++() ...という書き方だが、Fedora 16を新規インストールした辺りのbashからどうもsyntax errorになる。仕方がないんで、aliasを噛ませて修正。Before)
$ function g++(){ echo "hogehoge"; } -bash: syntax error near unexpected token `echo'After)
$ alias g++='mygpp' $ function mygpp(){ echo "hogehoge"; }