SyntaxHighlighter

2014年7月11日金曜日

CentOSでiptables、ip6tablesがnot runningなのに、GUI(system-config-firewall)上だと稼働状態に見える謎

service iptables off しても GUI(system-config-firewall)上では稼働しているように見える。どういうことじゃい!!!

ということで調べてみた。

     → GUI上でEnable/Disableを切り替えると、次の変更が行われる。
     ・Enableにする
          → /etc/sysconfig/system-config-firewallの中身でが --enabled になる
   → /etc/sysconfig/iptablesが作成される
   → /etc/sysconfig/ip6tablesが作成される
          → iptables が起動される
          → ip6tables が起動される
     ・Disabledにする
          → /etc/sysconfig/system-config-firewallの中身でが --disabled になる
   → /etc/sysconfig/iptablesが削除(rename?)される
   → /etc/sysconfig/ip6tablesが削除(rename?)される
          → iptables が終了する
          → ip6tables が終了する
なお、GUIでのEnable/Disable操作とchkconfig on/offは連動していない。。
・chkconfig offにしてからGUI上でEnableにし、OS再起動するとiptablesは起動しない。
・chkconfig onにしてからGUI上でDisableにし、OS再起動するとiptablesは起動する。

結論
・GUI上のEnabled/Disabled表示切り替えは、/etc/sysconfig/system-config-firewallを見て判断しており、実際のiptablesサービスの稼働状態を見ていない。
 
まぎらわしいぜ(T_T)

2014年7月9日水曜日

vagrantのプラグイン、saharaをいれるよー

こんにちは。

Virtual Machineの管理にvagrantは大活躍しており、もはやこれなしでは生きられない体になっております。

しかし、人間の欲望は底なしだ。

VM上で何か実験し、元に戻し、実験し、元に戻し… という作業をするのに、initし、upし、削除し、みたいなことも面倒に思えてくる。


そうしたところで sahara の記事を見つけたわけです。


Windows上でインストールしてみました。

> vagrant plugin install sahara

Installing the 'sahara' plugin. This can take a few minutes...
Installed the plugin 'sahara (0.0.17)'!


あら、あっさり(´∀`)

コマンドプロンプトで確認。

> cd vm-centos   # VMのディレクトリに移動
> vagrant up
> vagrant sandbox on
> vagrant ssh
$ mkdir hogehoge
$ ls hogehoge
hogehoge
$ exit
> vagrant sandbox rollback
> vagrant ssh
$ ls hogehoge
ls: cannot access hogehoge: No such file or directory

おおー。hogehogeディレクトリ消えてる(´∀`)

VMが動いたままだとすごく時間がかかるが、VMを停止した状態だとちょっと早くなるらしい。
(でも今のところ、起動したままでもそれほど遅くなかった。onもrollbackも30秒くらい?VMが大きくなったら遅くなるんでしょうね)





2014年7月8日火曜日

udev の rule で ENV{ID_SERIAL}なんかが効かないとき

すげえ悩んだ。

ATTRS{serial}=="ほにゃらら" だとマッチするのに、 ENV{ID_SERIAL}だとマッチしない。

致命的バグなんじゃないかと疑った。


結論から申し上げると、ルールファイルを読み込む順番が重要。

10-local.rulesとかいうファイルでENV{ID_SERIAL}をかいて、反映されなくて、うーんうーんうなっていたが、これを99-local.rulesにしたら有効になった。それだけのことだ。





udevadm info --query=all -n /dev/scd1

とかやると環境の値がバラバラと表示される。

udevadm info --atribute-walk --name=/dev/scd1

とかやると親のデバイス情報とかたどってATTRSホニャホニャ表示されるみたい。


2014年5月29日木曜日

MySQL eventのlast_executedはUTCなんだそうだ

こんばんは。

mysqlで

select * from mysql.event;

とやりますとイベントの情報が見れるわけですが、どうもlast_executedのタイムゾーンが違う、、、というか日本からみると-9:00になっているわけで。

Webをあさりましたら、どうやらマニュアルに「UTCで表示する仕様なりよ。でも動作はちゃんとしてるよ」的なことが書いてあるらしく杞憂でした。(読んでない(´ー`))

小一時間無駄にしたし、my.cnfに default-time-zone='+9:00' とか余計なもの書いちゃったよちくしょう。
 


2014年5月27日火曜日

CakePHPで$this->Model->saveに失敗したとき

こんにちは。

またもハマりました…

CakePHPで$this->Model->saveに失敗しだしたのです。前はちゃんと動いてたのに。

結論から言うと、「Modelの $validate の設定を見直しな!と。

もしくは、saveの第2引数にfalseを渡してみましょう。つまりvalidationすんなこのやろう!ってことです。まずはfalseにして、通ったら$validateの設定をみなおす、という順番が良さそうです。

ふいー

2014年5月22日木曜日

CakePHPで$this->Session->read('Auth.User.id') 値が取れない?

Authコンポーネントを使用している環境です。

開発環境1で動いていたコード、$hoge = $this->Session->read('Auth.User.id')が、何故か開発環境2だと$hogeがnullになってしまっていたようで、null禁止のDBカラムを更新できないという自体に。

 同じコード、同じDBにしたはずなのに… と思いながら Config/core.phpを開き、    Configure::write('debug', 0); → Configure::write('debug', 1);  にしたら、あっさり期待する動作に。


えええ、debugでしか動かないのおおお∑(´Д`;) とか思いながら0に戻しても、動く。ブラウザ起動しなおしたり別のブラウザしても動く。サーバ側で何かが変わったんだろうな…


ということで、穴があくほどコードを見ても間違っていないと思った時、別の環境では動くのに、こっちの環境では動かない、と思った時、CakePHPご使用の場合はconfigのdebugをいじってみるのもありかと思います。
 


2014年5月13日火曜日

Linuxであるフォルダ以下に存在するファイルのサイズ合計を求めるよ

あるフォルダ以下のサイズを求めるのに du を使っていたが、どうもduはブロックサイズに影響されるようで、環境によってまちまちになる、と。

Webをあさったらlsの結果からファイルサイズを求める方法があったので、それをアレンジして find の結果から集計するようにしてみた。

find . -type f -printf "%s %f\n" | awk '{i+=$1}END{print i}'


サイズ出すだけなら%fはいらないっすよ。