Fork爆弾

とあるnetの記事を見ていたら、watchdogタイマーのテストで以下を実行すると良いとか見た。

 

 

 

なんじゃ、この顔文字みたいなのは!と困惑していたのだが、よく見てみると、

「コロン(:)を名前とした関数を定義して、その関数内で自身を再帰的に呼び出して、パイプでつないで、バックグラウンド実行している。」といった感じだ。コロンじゃなくて、aとかでも同じ

 

 

 

上でも同じことになるし、理解しやすい。

実際にサーバ上でrootで実行すると、即座に何も出来なくなり、強制的に再起動するしか復旧方法が無さそう。

heartbeat構成で、サービス監視がしっかり出来ているか確認するときに使うと便利かも。

因みにFork爆弾と言って結構有名な手法らしい。wikipediaの解説がわかりやすい。

初めて見た時は、記号だらけなんで検索しても、全然ヒットしなくて困ったが、Fork爆弾って単語にたどり着いたらスッキリした。

ubuntu13.10で自動アップデート

新PCを入手したことで、ubuntu13.10をクリーンインストールしたが、ほぼ毎朝アップデートの通知が来てうざい。

確か毎回、自動アップデートの設定をしているが、いつも忘れるのでメモ。

unattended-upgrades

というパッケージが必要だがたぶん入っているはず。設定ファイルは、

 

 

こんな感じ。コメント行は抜いております。

securityは、標準で入っているが、updatesはコメントを外しております。

googleの行はchromeをインストールしているのでその設定です。

また、なぜかあまり情報が無いのですが、これだけでは動きません。

/etc/apt/apt.conf.d/10periodicに追加する必要があります。

 

 

 

APT::Periodic::Unattended-Upgrade “1”; が追加した行です。

これで自動アップデートされるはず。

サーバ版だと、ちょっと手順が違うかもです。

 

lsattr/chattrで消せないファイルとか

ふと、rootでも消せないファイルに出会った。

なんでやねーん。と思っていろいろ調べたところ、lsattrコマンドで確認してみると良いとのこと。

このiフラグが付いてると、例えrootであろうと、変更削除が出来ない。

このフラグを取るには、chattrにハイフン(-)取りたいフラグとしてあげればよい。

今回は、

逆に付けたい場合は、プラス(+)

他にも沢山フラグがあるようだが、

  • i: ファイルの変更を許可しない。削除もリネームもできない。(immutable)
  • a: ファイルの追加書き込みのみ許可する。(append)
  • c: ファイルを圧縮してディスクに保存する。アプリレベルは影響を受けない。(compress)
使えそうなのは、このくらいかな。他にもあるけどよくわからん。
例えrootだろうと消したくないファイルがあったら、iを付けとけば、なにかの時に助かるかも。

openjdkでjavaアプレット(icedtea-plugin)

なんだか、連日java関連が続いているが。。。

仮想環境の管理画面で、javaアプレットが必要になることが多々あるのだが、

oracle-java6では、何故か上手く行かず、オープンソース実装のopenjdkに戻してみた。

自分の環境では、依存関係で、自動的にopenjdkが入ったが、インストールされない場合は

jreじゃなくてjdkが良ければ適宜変更すれば良いと思います。

これでアプレットのページを開くと、何故かプラグインが足りないと言われる。

icedtea-plugin

を入れれば、ブラウザ上でjavaアプレットが動くようです。

 

なんとなくですが、eclipseとかもoracleよりも早い気がする。

openjdkの出始めの頃は、互換性がイマイチで(特に日本語フォント関連)

即sun-javaを入れてましたが、最近はopenjdkのままで充分(むしろ良い)かも。

tcpdumpでSTP(802.1d)を除外

tcpdumpを実行していると、以下のようなパケットが流れてちょっとうざい時がある。

 

どうやら802.1d(スパニングツリー)用の、パケットのようだ。

恐らく仮想環境のLinux bridgeでSTPが有効になっていて流れているのだと思う。

tcpdumpに以下を指定すれば除外出来るとのこと。

not ether proto 0x42

実行はこんな感じ

 

ubuntu13.10(amd64)でandroid-sdkを使う

過去に何度も挫折している、androidの開発だが、PCも新しくなったし久しぶりに挑戦しようと開発環境をサクッとインストールした。

が、開発環境だけなら今まで何度も入れているのでスムーズに行くと思ったが、見事に躓いてしまった。

sdk本体はこちらからダウンロード。

自分の環境は、ubuntu13.10の64bit環境なので、「Linux 64-bit」をダウンロード。

ADT Bundle」って方は、eclipseまで同梱されている模様。

普通にダウンロードして、eclipseを実行してみると、adbがないとかerror 2とか出てる。

なんだと思って、adbを手動実行してみると。

いやいや。見つからないって。ライブラリが足りないのかと思って

いやいや。

うーん。32bit環境だからかな。

 

ubuntuの32互換環境は、ia32-libsをインストールしろとかの情報があるが、13.10ではそんなパッケージは無さそう。

結局以下で必要そうな32bitライブラリをインストールしたら使えるようになった。

やっとこさ環境だけ出来た。なんかeclipseではなくて、android studioなんてのもいつの間にか発表されてるんですね。

また、Hello worldで終わりそう。。。

linuxで特定のプロセスのCPU使用率を調整するcpulimit

非常に時間のかかるコマンドなんかを実行した時、「今はちょっとブラウザ見たいから、お前ちょっと黙っててくれない。」なんて気持ちになる時がある。

ちょっと調べたら、その名の通り、cpulimitなるコマンドがあった。ubuntuならパッケージで簡単インストール

使い方は、

* プロセスID指定(50%)

* 実行ファイル名指定(50%)

* PATH指定(50%)

とこんな感じ

ちょっと試したところ

とこんな感じ。上はいい感じの部分をとってるが、パーセンテージは結構ばらついていた。

仕組みを解説されているかたがいたのですが、

SIGSTOP

SIGCONT

を繰り返しているだけの模様。実際straceで見てもそんな感じだった。

シグナル送るだけなら、whileループで回せば、sleep時間調整すれば同じようなこと出来るんじゃないかと思ってやってみた。

これで40%近くで安定した。sleep値はモロ環境に依存すると思う。

sshのホスト鍵チェックを回避する

sshのホストキーチェックは、man in the middle攻撃を防ぐのには、重要だが、閉じた検証環境などで、

毎回、known_hostsファイルを編集したりしなくてはならずちょっと煩わしい。

で、なんかsshコマンドにオプション付ければ、回避できるか調べたら以下で行けた。

 

 

 

ホストキーチェックを無効にして、known_hostsを/dev/nullにしてやる感じ。

ただ、毎回これを入力するのは、面倒なので、aliasでnsshにしてみた。.bashrcに以下を追加

 

 

 

折角なのでscpも追加。

これでホスト鍵チェックを無効にしたい時は、nsshを代わりに使えばOK

ubuntu 13.10(saucy)での日本語入力【最終決着】

ubuntu 13.10(saucy)から、ibusのバージョンが上がり、これまでの日本語入力環境がガラッと変わってしまった。

unityの時もそうだったが、なるべくなら本筋にしたがって、使い勝手が変わった程度なら自分で慣れれば良いと思うようにしてたのだが今回はさすがに無理だった。

何が変わって、何が正しいのかもよく分からないのだが、困った点を上げると

  • ibusの切り替えが、[super]-[space]になった。
    が、多分superがdashに取られてて、どうやっても切り替えられない、こちらは[Ctrl]-[space]に変えれば耐えられなくもない。
  • [Ctrl]-[space]でmozcに切り替えてから日本語入力をするのだと思うのだが、mozc状態(「あ」ってなってる時)でも「半角/全角」で日本語入力が切り替えられる。おそらくこの「あ」の状態で使ったほうが良いのだと思うのだが、前のように視覚的に入力が日本語なのか英語なのか分からない。
  • ウィンドウ間で、日本語入力の引き継ぎがよく分からない。terminalで作業してて、Firefoxに移って、日本語入力をオンして、その後terminalに戻ると日本語入力がオンになっていることが多く、非常に面倒だった

ということで2週間ほどで音を上げた。

そこで移行対象は、japanese teamでも紹介されているfcitx

実は13.10リリース当初も、一度切り替えていたのでが、japanese teamのrepositoryからではなく、

本家のfcitxをインストールしていて、「半角/全角」でmozcに切り替えても、日本語にならないケースが多々あり

断念しておりました。

japanese team版のfcitxをインストールしたところ、上記トラブルもなくなりました。

インストール手順(amd64)

  • repository追加

  • インストール

インストール後、fcitx-setup-helper を実行して指示に従えば、きっと上手く行きます(雑)

使用感は、以前のibusやWindowsと変わりません。

関係者方々に感謝です。

インフラ関係もそうですが、普段使えて当たり前のものって使えなくなって初めて
ありがたみを知るというか。。。普段から感謝を持って使って行くようにしたいです。