atrunがキューを実行しない

FreeBSDLink をベースとしたFreeNASLink を運用していますが、故(FoltiaLink とかFoltiaとかFoltiaなど)あってat系のコマンドを多用しています。(2015/1/21 追記:正確にはFreeNASで作成したjail内でのFreeBSDがatを多用)

が、どうもキューの登録に失敗するとか、登録したキューが実行されないとかいった問題が不定期で発生。syslogを見るとこんなものが。

Jan 16 01:40:01 foltia atrun[34960]: cannot open input file 'c2729a01697728': No such file or directory
Jan 17 02:05:00 foltia atrun[34946]: cannot create output file: File exists
Jan 17 02:35:00 foltia atrun[41622]: cannot create output file: File exists
Jan 17 02:40:01 foltia atrun[41800]: cannot stat in /var/at/jobs/: No such file or directory
Jan 17 10:00:00 foltia atrun[38582]: cannot stat in /var/at/jobs/: No such file or directory
Jan 17 22:30:00 foltia atrun[59238]: cannot stat in /var/at/jobs/: No such file or directory
Jan 18 00:00:00 foltia atrun[72840]: cannot stat in /var/at/jobs/: No such file or directory
Jan 18 00:30:01 foltia atrun[76644]: cannot stat in /var/at/jobs/: No such file or directory
Jan 18 10:00:00 foltia atrun[24497]: cannot stat in /var/at/jobs/: No such file or directory
Jan 18 10:30:00 foltia atrun[26414]: cannot stat in /var/at/jobs/: No such file or directory
Jan 19 01:00:01 foltia atrun[78312]: cannot open input file: No such file or directory
Jan 19 16:55:03 foltia atrun[38395]: cannot open input file 'c28cf201698b9b': No such file or directory
Jan 19 18:30:01 foltia atrun[44437]: cannot stat in /var/at/jobs/: No such file or directory

この手のメッセージで検索すると古くはFreeBSD 6の頃から同じような症状を訴える人が少なくないのですが、どれも解決には至っていない模様。これがOSのバグだとしても、こんな基本機能の不具合が長期間放置されるとも考えづらいし…

ただ調べていくとどうもこの症状を訴える人はrootのcrontabに以下の設定をしている模様。

* * * * * /usr/libexec/atrun

/usr/libexec/atrunというのは時間が来たキューをまとめて実行するコマンド。OSの初期設定は5分毎にこれを実行しますが、上の設定だと毎分実行して時間が来たキューはなるべく早く処理するということになります。

私もこの設定にしてたので、ダメ元で3分毎に実行と頻度を落として様子を見ることに。さて、どうなるやら。

[2015/1/21 追記] 3分毎の実行は7:30にエラーを出しあえなく失敗(-_-;) ログの時刻を見るとエラーは5の倍数の分の時のみに発生している。5の倍数の分を外すようにcrontabを設定、様子見を開始。

— posted by mu at 12:48 am   commentComment [0]  pingTrackBack [0]

夜11時に吉野家行ったら

閉店時刻だと言われた( ゚Д゚) ぎりぎり持ち帰りだけは注文受けてもらえて助かったのですが。私の2分後に来た客は手ぶらで帰宅となりました。

数か月前にすき家が夜間働く人が確保できないという理由で深夜営業中止を発表してたけど、吉野家もということでしょう。日本人には牛丼屋・コンビニは24時間365日、大手スーパーも深夜や元日から営業が半ば当たり前の感覚になってましたが、これからはそうではなくなっていくのでしょう。

こういう日本の感覚でアメリカシリコンバレー辺りに行くと痛い目にあったりします。

  • スーパーやレストランは夜8時くらいで閉店。セブンイレブンは朝7時から夜11時までやっているというのが元々の意味で、それが売り文句になるわけです。
  • 夏時間になり夏至近辺になると日没が午後8時以降になります。つまり陽が沈んだらスーパー・レストランはすでに閉店。こうなると開いているのはマクドナルドとバーガーキングくらい(それでも11時には閉まる)。
  • Thanks giving dayやIndependence dayなど大きな祝日はレストランが軒並み閉店、食事どうしようかと途方にくれました。まぁそんな風習とは無縁のインド人とか中国人の店は開いてたりしますが。
  • Thanks giving dayの前日、スタバでコーヒー買ってくるように奥さんに頼まれた会社のアメリカ人が早めに帰宅しました。午後5時に閉店するんだそうです。おそらくクリスマスイブもそうなんでしょう。

冷静に考えたらアメリカの方が正しいと思う。店員だって人だもの。

— posted by mu at 11:18 pm   commentComment [0]  pingTrackBack [0]

自分で立てたSVNサーバがAuthorization failed

新しいシステムを作ることになったので、バージョン管理システムLink のサーバを立てようかと。個人だと最近はgitを使うことが多いのですが、会社ではSubversionが優勢。レポジトリをクラウドストレージと同期させればバックアップも取れるかなということで、WindowsサービスとしてSVNサーバを立てることに。

方法は検索すればごろごろ出てきますが、今回はここLink を参考に。svnのコマンド類はTortoiseSVNのbinディレクトリの物を使用。

サービスも無事立ち上がりTortoiseSVNから接続もできるのですが、なぜか書き込みをしようとするとAuthorization failedを連発。ログを見てもE170001: Authorization failedとしか書かれていない。

原因は非常に馬鹿らしいミス。svnserve.confには以下の3行を追加する必要があります。
anon-access = none
auth-access = write
password-db = passwd

一方svnadmin createで作成されるデフォルトのsvnserve.confは以下のようになってます。

# こめんと~

[general]
#
# たくさんのこめんと~
#
[sasl]
# またまたこめんと~
#

重要なのは[general]、[sasl]の順でブロックが記述されていること。何も考えず先ほどの3行をファイルの最後に書き足したので、これらは[sasl]ブロックに属すると解釈されます。ところがこれらは[general]ブロックに書かないといけない。つまり私の設定は無効。

3行を[general]ブロックに移すことでSVNサーバは期待通りの動作をするようになりました。2日潰してしまった…

[参考]

— posted by mu at 08:42 pm   commentComment [0]  pingTrackBack [0]

CEATEC Japan 2014

このブログを見る限りCEATECに行くのは2010年Link ぶりらしい。そんなに行ってなかったのだろうか?

ざっとみた印象。私の性格上、基本的に誉めないw

  • ディスプレイ。次世代ハイビジョン(4K/8K)が旬なのでしょうね。あちこちで目にしました。MEMS IGZOには興味あったので見てきましたが、普通にきれいでした。映り込みがどれくらいあるかも見たかったのですが、明るい映像ばっかり表示していたので分からず。
  • ヘッドアップディスプレイ(眼鏡型含む)。眼鏡型を試着しましたが、至近距離の情報表示と遠方の現実風景との焦点の往復ですごく目が疲れる。同じ理由で至近距離の情報を見ているときは現実風景に目が行ってないことが多かったです。自動車の計器やナビは自分が見たい時に意図的に視線を向ける一方、これは表示が常に視界にある分たちが悪い。これを解決してくれないと使いづらいなぁ。
  • ソフトウェアの占める割合が増えた。自動車は燃料電池以外は情報端末化を強化しますよくらい? 村田製作所のあれも電子部品よりソフトウェアの賜物のように思える。10台を組織行動させるのもそうだし、玉乗りっぽく見えるように人形をわざと揺らしているのもそう。直立不動にする方が簡単だと思う。
  • 燃料電池のエネルギー変換効率は立派だとしても、水素はCO2を出さないクリーンエネルギーですという表現にはどうも納得いかない私。その水素をどうやって作るのかと。

まとめ:ロボット相撲見るのも楽しいです。

— posted by mu at 10:57 pm   commentComment [0]  pingTrackBack [0]

recptx.plが動作するんだけどの件

FreeBSD portsのptx-kmodに付属しているrecptx.plをfbsdpt3で用いると、sysctlの部分でPermission deniedになるようです。開いているデバイスにsysctlをかけないように、id:f99aqLink 氏はsysctlの位置を変えて回避したようです。

ただこれではsysctl中はデバイスがフリーになっているので、その間に別のプロセスがデバイスを開いちゃう時間が増大し、スレッドセーフ的には気持ち悪さ++らしいです。

一応こんな感じにロックファイルを使うと完璧じゃないけど気持ち悪さの上昇が抑えられるみたいです。/tmp/.recptx.lockをあらかじめ用意しておくといいらしいです。ついでにマルチカード対応もおまけしとくよって。

--- /usr/ports/multimedia/ptx-kmod/work/ptx-20111212/tools/recptx.pl    2011-12-14 04:26:37.000000000 +0900
+++ /usr/local/bin/recptx.pl    2014-09-29 13:37:17.000000000 +0900
@@ -252,39 +252,46 @@
 #
 # select device
 #
-#  TODO: multicard (/dev/ptx1, /dev/ptx2, ...)
-#
-open($t, "<", "/dev/ptx0.${tuner}0");
-if ($t) {
-    $dev = "/dev/ptx0.${tuner}0";
-    $mib = "dev.ptx.0.${tuner}0";
-} else {
-    open($t, "<", "/dev/ptx0.${tuner}1");
-    if ($t) {
-       $dev = "/dev/ptx0.${tuner}1";
-       $mib = "dev.ptx.0.${tuner}1";
-    } else {
-       die("device busy");
+$tunerlock = '/tmp/.recptx.lock';
+open(TUNERSCAN, "< $tunerlock") or die "Can not open lock file ${tunerlock}";
+flock(TUNERSCAN, 1);
+
+$deviceFound = false;
+foreach $card ('0') # Change here for multi-tuner.  Ex ('0', '1')
+{
+    foreach $port ('0', '1')
+    {
+       if(open($t, "<", "/dev/ptx${card}.${tuner}${port}"))
+       {
+           $dev = "/dev/ptx${card}.${tuner}${port}";
+           $mib = "dev.ptx.${card}.${tuner}${port}";
+           $deviceFound = true;
+           last;
+       }
     }
+
+    last if($deviceFound);
 }
 
+die("device busy") if(!$deviceFound);
+
+
 #
 # recording
 #
+close $t;
 system("/sbin/sysctl $mib.freq=$freq >/dev/null 2>&1");
-
 eval {
     local $SIG{ALRM} = sub { die "alarm¥n" };
     alarm $duration;
 
     $pid = fork();
     if ($pid) {
-        close $t;
        wait;
     } else {
        $cmd = sprintf($cmdfmt, $dev, $filename);
-        close $t;
-       exec("$cmd");
+       close(TUNERSCAN);
+       exec($cmd);
     }
 
     alarm 0;

っていうことを通りすがりのおばさんが言ってました。正直私にはなんのことやらさっぱりです。

[参照]

— posted by mu at 10:42 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0227 sec.
prev
2017.9
next
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30