ソフトウェアエンジニア現役続行

雑多なことを綴ります

「dpkg-reconfigure tzdata」コマンドをバッチ処理

Ubuntuタイムゾーンを設定するときは「dpkg-reconfigure tzdata」コマンドを実行して、起動したインタラクティブウィンドウで Asia -> Tokyo を選択するのが良いのですが、chefなどバックグラウンドでバッチ処理で設定するときは、インタラクティブだと困ります。

そのときは以下のようにdpkg-reconfigureに「--frontend noninteractive」オプションを付けると良いです。

$ sudo echo Asia/Tokyo > /etc/timezone
$ sudo dpkg-reconfigure --frontend noninteractive tzdata

UbuntuでTimezoneを変更する方法

Ubuntuタイムゾーンを設定する方法を検索すると、主に以下の2通りが出てきます。

  1. 「cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime」コマンドを実行して再起動
  2. 「dpkg-reconfigure tzdata」コマンドを実行して、インタラクティブウィンドウが起動するので、Asia -> Tokyoを設定する

1ではなく2の方法で設定することをオススメします。

1だと、dpkg自体がこのタイムゾーン設定を覚えないため、のちのちapt-get upgradeなどで様々なパッケージがアップグレードされたときに、タイムゾーンの設定が戻ってしまいます。2だとそのようなことは起こりません。

 

 

スタンディングデスクのすすめ

スタンディングデスクの長所

色々なところでスタンディングデスクが紹介されているのを見て、自分もスタンディングデスクを使い始めました。実際にスタンディングデスクで仕事をするようになって1ヶ月が経ち、以下のような効果を感じています。

・腰痛になりにくい

・肩こりになりにくい

・集中力が持続する(業務中に眠くならない)

・運動不足解消にもなる

・収納が増える(私のスタンディングデスクの場合)

私の作ったスタンディングデスク

私の作ったスタンディングデスクはこんなカンジです。なかなかの使い心地です。

2013092921041920130929212454

作り方

以下の材料を購入し、元のデスクにキューブボックスを乗せ、その上に天板を乗せれば出来上がりです。

・キューブボックス

・天板

実際に買ったもの

キューブボックスの高さや天板のサイズは元のデスクのサイズや、使う人の身長によって変わるので、あくまで参考にしてください。デスクの高さは以下のページの中段にある この画像 がとても参考になります。

たった2300円!IKEAの家具で自作するスタンディングデスク - Lifehacking.jp

1. ジーボードキューブボックス BR 95418

99%古紙を使ったキューブボックス(幅34x奥行28.7x高さ32cm)。とても軽くて、かつ手頃なお値段で、すごくオススメです。これで耐荷重約100kgだからすごい。A4サイズの書類を立てられないのが残念ですが、それでも費用対効果は十二分に良いです。

2. カラー化粧棚板 ダークオーク LBC-1240

私は、この幅120×奥行40×厚さ1.8cmの天板を2枚ならべて、幅120x奥行80のスタンディングデスクにしています。

3. ジョイント式マット 木目調 ブラウン JTM-32 WOD BR 33035

これはおまけ。長時間 立っているとかかとが痛くなるので、これを2枚重ねて、その上に立つようにしています。

疲れたときは?

疲れたときは、無理せず座って仕事をするようにしています。

20130929210420

ちなみにイスはElgohumanです。もともとはこれに座って仕事をしていましたが、今ではあまり仕事では使われず、もっぱら昼寝用イスとなっています

cassandra を apt-get でインストール(debとdeb-srcはコマンドではない)

やり方は以下に書かれています。

http://wiki.apache.org/cassandra/DebianPackaging

 

が、以下を設定する方法が分からなかった。。。

deb http://www.apache.org/dist/cassandra/debian 11x main
deb-src http://www.apache.org/dist/cassandra/debian 11x main

 

上記の deb と deb-src はコマンドではありません。/etc/apt/sources.list に記載します。

ずっとFedoraを使っていて、Ubuntuは初心者だったので、理解に時間がかかりました。

 

Ubuntuフォーラムでも「debコマンドはどうやってインストールするの?」という私と同じような勘違いをしている方が多かったので、ここに記しておきます。

Can't locate local/lib.pm in @INC at ...

私の使っている Ubuntu 12.04 だけかも知れませんが、必ずCPANコマンド実行の一回目は「Can't locate local/lib.pm in @INC at...」というメッセージでエラー終了します。でもリトライすると成功します。初回時のエラーメッセージは以下のとおりです。

...

Checksum for /home/john/.cpan/sources/authors/id/A/AP/APEIRON/local-lib-1.008009.tar.gz ok
---- Unsatisfied dependencies detected during ----
----     APEIRON/local-lib-1.008009.tar.gz    ----
    ExtUtils::MakeMaker [build_requires]
Running make test
  Make had some problems, won't test
  Delayed until after prerequisites
Running make install
  Make had some problems, won't install
  Delayed until after prerequisites

Can't locate local/lib.pm in @INC (@INC contains:
    /home/john/perl5/lib/perl5
    /etc/perl
    /usr/local/lib/perl/5.14.2
    /usr/local/share/perl/5.14.2
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.14
    /usr/share/perl/5.14
    /usr/local/lib/site_perl
    /home/john/Desktop)
at /usr/share/perl/5.14/CPAN/FirstTime.pm line 1300.

気持ち悪いので調べたところ、CPANが利用するlocal::libがインストールされていないのが原因でした。Ubuntuなら以下のコマンドでインストールできることができます。

sudo apt-get install liblocal-lib-perl

または

sudo apt-get install cpanminus

以下のページを参考にしています。
http://stackoverflow.com/questions/16702642/cant-locate-local-lib-pm-in-inc-at-usr-share-perl-5-14-cpan-firsttime-pm

bindでゾーン転送の設定確認と手動適用

複数台のbind(DNSサーバー)を構築する場合、1台をマスターにして、残りをスレーブにするのが一般的です。そうすれば、マスターで設定したゾーンの設定が自動的にスレーブに反映されます。

「bind ゾーン転送」などで検索すると、方法が色々と出てきます。

ゾーン転送はすぐに行われるわけではなく、SOAレコードのRefresh値の頻度で行われます。1〜数時間が一般的です。となると、1) ゾーン転送の設定が正しく反映されているか確認したい、2) ゾーン転送を手動で即時に実行したい、というケースがあるので、方法を調べました。

1. ゾーン転送の設定確認

フォーマット:

$ dig @マスターサーバのIPアドレス ゾーン名 axfr

例:

$ dig @1.2.3.4 example.com axfr

2. ゾーン転送の手動適用

フォーマット:

$ rndc retransfer ゾーン名

例:

$ rndc retransfer example.com

run-parts --test で cronスクリプトが動くかテスト

結論から言うと、以下のようにrun-partsコマンドを--testオプションで実行することで、cron.dailyで実行されるスクリプト名を確認することができます。同様にcron.hourly, cron.weekly, cron.monthlyも確認可能です。

run-parts --test /etc/cron.daily

cronスクリプトを作成したときにいつも苦心していたのが、そのcronスクリプトがちゃんと動くかどうか確認することです。このオプションをもっと早く知っていれば。。。今まではマシンの時刻をずらしたり、わざとsyslog出力してスクリプトの実行を確認したり、色々と面倒なことをしていました。

しかもrun-partsのmanページを見ると分かるのですが、ubuntuなどDebian系のディストリビューションでは、cronスクリプトのファイル名に許されている文字列は、(^[a-zA-Z0-9_-]+$) のみです。つまり英数字以外で許される記号はハイフンとアンダースコアのみです(ドットなどはNG)。今までredhat系を利用していた私は、全く疑いもせずにubuntuサーバーにインストールしたcronスクリプト名にドット(.)を使ってしまい、cronスクリプトが実行されず原因究明に時間がかかりました。