memo378 : WP-1115

Created Mon Nov 15 15:29:57 2010
Last Modified Wed Nov 17 16:36:29 2010

*#1 Mon Nov 15 15:29:57 2010 / Wed Nov 17 16:36:29 2010

memo379 Forward <= Today => Previous memo377

忘れ物をせずにはいられない体になった。

*ゲインの時間変化 => memo378
*vmestat改造 => memo378
*runを一定時間で切るインスタントな方法について => memo378

・pawのfitにはlandauが無いが、rootのfitにはlandauがある。
へへー

・IRCnet上に#ribf_nebulaをとりあえず作ってみた。"nebula01"がNEBULA横PCからの接続。

・Am-Be中性子源の利用を検討?

*#2 Mon Nov 15 15:30:40 2010 / Mon Nov 15 20:36:52 2010

<D213のゲインの時間変化問題>

D213のアナログスペクトル
run65 11/10 18:17-
./file/1289797087.ps
run66 11/11 23:05- 11/13 18:20(2GB超過で停止)
./file/1289797099.ps

同設定のはずだがダブルピーク、というかノイズ肩がピーク化している。なぜ?
ノイズ肩と本来のピークとのカウントの差はどちらも約600で同程度。

ゲインが時間変化しているのでは?

run66を4つに区切ってそれぞれのアナログを見る:
./file/1289820685.ps
動いている様子が克明にわかる。

<さしあたりどうするか?>
今日(11/15) => 現状の設定のまま時間を細かく区切ってrunをとる。ゲインチューンはD213を除いて完了とする。
明日(11/16) => D213とD212のHVプラグを入れ換えて同じことをやる。

。。。これで二日潰れるか。

*#3 Mon Nov 15 15:34:10 2010 / Mon Nov 15 22:06:59 2010

<vmestat実行ログ>

vmestatを書き換えてログを残すようにした。
第2パラメータにファイル名を指定すると、そのファイル名に日付とvmestatが解釈したコマンドが追記される。

patch対応差分ファイル->memo378

ログファイルの最終更新から2秒以内に実行された場合は同セッションとみなし日付を残さない。
ログファイルが最終更新から6時間以上経過していた場合は、
そのログファイルを別名を付けて保存し、新たに白紙のファイルを作成してそれをログファイルとする。=> memo378





*#4 Mon Nov 15 15:36:55 2010 / Mon Nov 15 22:08:12 2010

*** vmestat~    2008-06-02 09:31:51.000000000 +0900
--- vmestat     2010-11-15 22:08:09.000000000 +0900
***************
*** 4,53 ****
  # Set VME Status
  # Apr 1, 2003  H.Baba
   
! $inst = '/usr/nbbq/vmestat/';
   
! $CMDVME = '/usr/nbbq/bin/cmdvme';
! $STAFILE = '';
   
  opendir(DIR,"$inst");
! @dir = readdir(DIR);
  closedir(DIR);
   
  foreach $file (@dir){
!   if($file =~ /.pm$/){
!     require "$inst/$file";
!     $file =~ s/.pm//;
!     $file =~ tr/[a-z]/[A-Z]/;
!     push(@name,$file);
!     push(@module,new $file);
!   }
  }
   
  my ($val);
   
  if($#ARGV < 0){
!   print "vmestat FILENAME\n";
!   exit(0);
  }
   
  open(IN,"< $ARGV[0]");
! @data = <IN>;
  close(IN);
   
  foreach $line (@data){
!   @val = '';
!
!   $i = 0;
!   foreach $mod (@name){
!     if($line =~ /^$mod/){
!       @val = $module[$i]->com($line);
      }
-     $i++;
-   }
-
-   foreach $vc (@val){
-     &cmevme($vc);
-   }
  }
   
  sub cmevme{
--- 4,100 ----
  # Set VME Status
  # Apr 1, 2003  H.Baba
   
! # Modified
! # Nov 15, 2010 Y.Kawada
   
! use IO::File;
!
! my $inst = '/usr/nbbq/vmestat/';
! my $CMDVME = '/usr/nbbq/bin/cmdvme';
! my $STAFILE = '';
! my $livetime = 2;
   
  opendir(DIR,"$inst");
! my @dir = readdir(DIR);
  closedir(DIR);
   
  foreach $file (@dir){
!     if($file =~ /.pm$/){
!       require "$inst/$file";
!       $file =~ s/.pm//;
!       $file =~ tr/[a-z]/[A-Z]/;
!       push(@name,$file);
!       push(@module,new $file);
!     }
  }
   
  my ($val);
   
  if($#ARGV < 0){
!     print "vmestat FILENAME\n";
!     exit(0);
! }
!
! my $logger;
! undef($logger);
!
! if($#ARGV>=1){
!     my $born = -e $ARGV[1];
!     if($born){
!       my $last = (stat $ARGV[1])[9];
!       if(time - $last > 1*6){ # 6hour+
!           use File::Copy;
!           my $master = $ARGV[1];
!           my $carbon = $master;
!           my @lt = localtime(time);
!           my $timestamp =
!               sprintf("%04d%02d%02d%02d00",
!                       $lt[5]+1900, $lt[4]+1, $lt[3], $lt[2]);
!           if($carbon =~ m/(.*)\.(.*)/){
!               $carbon = $1.$timestamp.".".$2;
!           }else{
!               $carbon += $timestamp;
!           }
!           if(copy($master, $carbon)){
!               print STDERR $!;
!               exit;
!           }
!           if(-e $carbon){
!               unlink($master);
!           }
!
!       }
!     }
!
!     $logger = IO::File->new($ARGV[1], 'a') or die $!;
!     $logger->print("\n");
!
!     if(time - (stat $ARGV[1])[9] >= $livetime || !$born){
!       $logger->print("\n");
!       $logger->print(scalar(localtime(time)),"\n");
!       $logger->print("------------------------\n");
!     }
  }
   
  open(IN,"< $ARGV[0]");
! my @data = <IN>;
  close(IN);
   
  foreach $line (@data){
!     @val = '';
!
!     $i = 0;
!     foreach $mod (@name){
!       if($line =~ /^$mod/){
!           if(defined($logger)){ $logger->print($line); }
!           @val = $module[$i]->com($line);
!       }
!       $i++;
!     }
!
!     foreach $vc (@val){
!       &cmevme($vc);
      }
  }
   
  sub cmevme{

*#5 Mon Nov 15 21:31:11 2010 / Mon Nov 15 21:38:15 2010


(1) "ls -lt [rdfファイル]" を一定時間ごとに実行し、その結果を保存しておく。
(2) rdfファイルのフォーマットはわかっているので、区間前後でのファイルサイズ変化分からソの間に増えたブロックを割り出す。
(3) その部分だけを切りとってきて、前後に適当なヘッダとエンダを貼りつければよい。

今日はこの方針でいく。

---------------------------------
#!/usr/bin/perl
$a=0;
$| = 1;
for(;;){
    my $res = `ls -ltr 0074.rdf`;
    print STDERR $res;
    print $res;
    sleep(1*3600);
}

*#6 Mon Nov 15 21:54:45 2010 / Mon Nov 15 21:56:35 2010

この部分:
---------------------------------------------------
    my $born = -e $ARGV[1];;
    if($born){
        my $last = (stat $ARGV[1])[9];
        if(time - $last > 3600*6){ # 6hour+
            use File::Copy;
            my $master = $ARGV[1];
            my $carbon = $master;
            my @lt = localtime(time);
            my $timestamp =
                sprintf("%04d%02d%02d%02d00",
                        $lt[5], $lt[4], $lt[3], $lt[2]);
            $carbon =~ s/(.*)(\..*)?/$1$timestamp$2/;
            if(copy($master, $carbon)){
                print STDERR $!;
                exit;
            }
            if(-e $carbon){
                unlink($master);
            }
             
        }
    }
 
    $logger = IO::File->new($ARGV[1], 'a') or die $!;

*Linked from: