httpdプロセスのメモリ使用量をワンライナーで表示する

最近、何度かサーバーのメモリの使用情報を調べる期間があったのですまとめておきます。

対象システムはCentOS6.7。この手の作業が求められる状況は何かシステム障害が発生している時です。
そういう状況では準備作業することもままならないので、すぐに使えるOS標準のコマンドで対処します。

サーバーの状態を確認するならまずはtopコマンド。

ヘッダーの部分でサーバーの搭載メモリ量と空きメモリ量がどんな感じ把握できる。

今の値を知りたいだけならpsコマンドとawkを組み合わせる

$ ps aux | awk '/http[d]/{s+=$6}END{printf("%\04710d\n",s)}'
うっかり数値の桁を読み違えたりしないように桁合わせとカンマを入れておくのがポイントです。
88,632

topコマンドみたいにずっと状態をワッチしたいならbashで全体をループさせてしまう。

$ while true; do ps aux | awk '/http[d]/{s+=$6}END{printf("%\04710d\n",s)}'; sleep 1; done
88,632
88,632
88,632
88,632
88,632
88,632
88,632

たまに画面をチラ見すだけ値と一緒に時刻も表示する。ついでにあとで値を使って集計できるようにファイルにも保存しておく。
$ while true; do dt=`date '+%Y/%m/%d-%H:%M'`;echo -n $dt;ps aux | awk '/http[d]/{s+=$6}END{printf("%\04710d\n",s)}'; sleep 1; done | tee res.log

2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912
2017/11/15-14:31 83,912

ありゃリャ、コマンドが長すぎてコピペ操作も思わず指先に力が入ってしまうほどの長さになってしまった。

所有している本中ではトップクラスの厚さ。めくるたびに何か発見がある。bashは学習コストも低いし、仕事でサーバー作業するならこれほど作業効率を上げてくれる道具はないです。

Pepperパートナープログラム取得への道

ソフトバンクロボティクス社が販売するPepperには一般向けモデルと企業向けモデル(Pepper for Biz)があります。ハードウェア的には同じですが、サポート体制とインストールされているアプリの構成が違います。企業向けモデル(Pepper for Biz)は会社の業態に合わせたアプリをインストールすることができ、パートナープログラムとはそういう企業向けアプリを開発を請け負うパートナーを認定するものです。

合格すればロボアプリパートナー認定ロゴと認定証書が提供され公に掲げることが許されます。Iotメーカーの開発者トレーニングと聞くと目の玉が飛び出るほどお金を払うような気がしますが、Pepperパートナープログラムの場合は無料です。それも気前のいいことに大企業だろうが零細企業だろう参加できるうえに、うちみたいにPepperを持ってない開発者に無料でPepperを使わせてくれる場所もあります。

Pepperパートナープログラム取得へ向けた計画表

1月〜3月

  • 説明会に参加
  • テクニカルレクチャー

4月〜5月

  • 筆記試験
  • 実技試験
  • 申請・認定

最初にアクションを起こしたのが1月の下旬。Macbookに開発環境を構築してサンプルコードを解析。Aldebaranアトリエの開発ワークショップに通っているうちにロボアプリの可能性に魅了され2月末に開催された説明会に滑り込み参加しすぐでに4月の筆記試験も申し込み済み。これに合格すると次の実技試験では実際に課題アプリの開発。すぐに課題を提出できても審査が混み合っていれば待つしかないです。認定がでるのは5月末くらいと思って計画してます。

今まではPepperロボアプリ開発はサイドプロジェクトでしたが、これからは仕事として受託できるようにしたいです。

今更ですが最初にこれで読んでおけば、余計な時間を無駄にしないですみました。

Pepperロボアプリ開発に向けて

ブログを再開しました

ブログを再開します。WordPressの研究も再開です。どこの変更がまずかったのかこのブログの表示が変です。会社の顔であるWebsサイトのデザインがこれではまずいと思いますが、このブログを見て私のスキルを推し量る目安にする方もいますので自力で直します。

新たな出会いは無し

人と会っていないわけではなく、懇親会、勉強会など参加しているが人脈に繋げるための一歩を踏み出せてない。まぁ、そんな時期もあります。

サーバ環境をmBaasに切り替え中

iPhoneアプリ開発環境のプログラミング言語をSwift2に移行しました。最近プロジェクトの中断という痛手がありましたが、代わりに貴重な知見が残りました。今後のスマホアプリのサーバ作り込みにはmBaaSを使うことにします。もっと前からmBaaSを利用するシステム構成にすれば状況は変わったかもしれませんが、この教訓は次回に生かします。

Pepperロボアプリやります

サイドプロジェクトとしてPepperのロボアプリを開発します。いろいろ調査して見た結果、Pepperのアプリケーション開発にはWeb開発とスマホアプリ開発で培ったスキルが流用できます。ここでもサーバ処理はmBaaSで対応できます。Pepper基本ソフトがベースにしているLinuxは得意分野ですし、フレームワークのROSはPepper以外の他のロボットとも共通するので、Pepper以外のロボット開発への転用できる見込めます。ロボット分野はビジネスというよりも研究目的の方が色合い強いのでいつまでニーズがあるかわからないし、Pepperもブームともに消える可能性があります。しかし、そんなことは移り変わりが激しいのはこの業界でそんなことを気にしていたら何もできません。

この本に、ここ10年くらいロボットの一つとしてPepperが紹介されてます。歴代のロボットと比べてPepperが一番の違いは何かいうとネットワーク接続されているというです。それまで全てスタンアローンで動いてました。スマホのようにネットワーク経由でソフトウェア更新も行えます。会話機能はIBMのメインフレームコンピュータにもつながります。攻殻機動隊に出てくるタチコマ達のAIが人口衛星のコンピュータに搭載されてたみたいな感じでしょうか。

Pepper、欲しいなぁ。早くロボアプリ開発を仕事にしたいなぁ。そうだ、すでにPepperを持っている人でボロアプリ開発者を探している人がいたら連絡ください。サーバ処理で困っているとか、オリジナルのボックス作るとか。こちらで開発を請け負ってもいいし、すでに内製しているなら訪問対応とかスポット対応の依頼も請けます。どうぞよろしくお願いします。

COBOLerを育ててもレガシーシステムのマイグレーションは成らない

大ベテランのソトウェアエンジニアの人たちと雑談するとちょくちょくあがるのがCOBOLの話。1963年に標準化されたプログラム言語で金融系、インフラ系のシステムコンピュータシステムの多くはCOBOLで実装されているといわれてます。

COBOLって詳細はどんな言語だったか思い出しながらドットインストールのCOBOL入門を見ました。使っている教材はOpenCOBOLですが、1レコードは80バイト固定であるとか、7カラム目に*がある行はコメントになるとか、懐かしくて思わずニヤついてしまいます。

もう少し掘り下げて調べてみました。初版が2005年の情報処理技術者試験の教科書ですが、非常に互換性に重点を置く言語なので、ほぼ差し障りないでしょう。COBOLの特徴として以下のものをあげてます。

  • 40年以上も使われいる実績
  • プログラム言語の習得のしやすさ
  • 異なるOS間の移植性の高さ
  • ソースコードの見通し良さ

人材派遣会社の営業さんから聞いた話ですが、今でもCOBOLができるエンジニアは募集しているそうです。長年、業務にかかわってきたベテランがどんどん引退してしまうのでエンジニアが足りないそうです。システムを40年、50年と延命してきたのに保守するエンジニアがいない。エンジニアがないなら育てればいいのではないか。話はそうも簡単ではないんです。もし優秀なエンジニアがいてその人がCOBOL言語のエキスパートにしたにしても業務知識に精通してないのでは実力は発揮できません。稼働期間の長い大規模システムはどこもそうなのですが、戦力になるまで時間をかけて教育しなきゃないならプロジェクトチームの方だって困ります。

pepperは怖くないよ

pepperを触ってみた雑感

サイドプロジェクトとしてpepper用アプリを開発してます。開発環境の構築して最初はHello World。サンプルコードを読んで開発シナリオも掌握済み。choregrapheを使えばロボットの挙動をプログラムするのも楽勝です。

pepper開発の実際

pepperはデリケートな精密機械なのであまり負荷をかけると不安定になったり誤作動を起こします。シュミレータを使ってアプリの単体試験をしようにもセンサーや胸部タブレットの制御はシュミュレーターでは再現してくれません。もっと自分の開発スキルが上がってくれば状況は変わってくるかもしれませんが、今は開発効率は亀が歩むが如く劣悪でモドカシイです。

今後の展望

ロボット開発は地方のエンジニアが高齢者介護や地域産業に貢献する絶好の機会だと思ってます。技術的にはスマホアプリの開発のノウハウが流用できます。会社の業務として請け負うことを視野に準備を進めてます。

WordPress 4.4 alphaの自動バックグランド更新をオンのまま放置

ローカル環境にセットアップしただけでは飽きたずレンタルサーバーにも構築。4種類の自動更新機能がデフォルトでオン設定。更新が実行されたタイミングでメールが飛んでくる。起動したままにしておくとどうなるか。

UPDATE LOGは以下の通り。
– WordPress 4.4-alpha-35308 Wed, 21 Oct 2015 13:25:23
– WordPress 4.4-alpha-35265 Mon, 19 Oct 2015 14:38:50
– WordPress 4.4-alpha-35213 Fri, 16 Oct 2015 08:22:53

この調子でベータ1がリリースされれば更新される見込み。その後は続けてベータ2、3、4と更新されて12月に4.4の正式版になるのかどうかは、このまま放置しておけばわかるでしょう。何もせずメールで知らせが来るまで放置しておいていい。

もし問題が起きたら自動バックグラウンド更新の設定ですぐにwp-config.phpで更新機能を停止する設定をしてしまう。

WordPress 4.4 alphaの環境を作ってみた

積み上げた技術書

WordCamp Tokyo 2015まで半月。参加する予定なので、自分のWordpressの知識を棚卸しのためにWordpress4.4 alpha版を構築。単純で退屈な作業かと思ったら割と面白かった。

WordPress.orgのsvnかなんかで管理してあるのをダウンロードしてくるものかと思って探索しても、それらしいのものが探してもみつからない。フォーラムを読むと4.4で提供される機能だけならplug-inで試すことができるが、どうせやるならコアをバージョン4.4にしてthemesもTwentySixteenで動かしてみたい(TwentySixteenはコアが4.4でないと動かない)。正式リリースまで2ヶ月。仕事に影響しないローカル開発環境に構築して、正式なリリースまでアップデートされていく様子をワッチしておくのはいい勉強になる。

How to Get WordPress 4.4 alpha and Beta (1 post)にalpha版の取得方法がポストされていた。誰かに質問しようかと思っていた時だったので、締めくくりの”Hope that helps.”が心に響いた。alpha版のtar玉をダウンロードして新規に構築するわけではなく、WordPress Beta Tester プラグインからリポジトリ(?)をalpha版に向けてコアを更新する流れでした。つまり先に既存の実装が必要になる。なかなか運用者に優しい仕組みではあるけど、なんかいつもと勝手が違うので慣れるまで時間がかかりそう。考えてないでやると決めた以上は作業をやってしまう。

まずはWordPress4.3.1の構築。ローカル開発環境なので慣れた手順でさくっと構築する。

次にalpha版に取得に向けた作業。
WordPress Beta Tester プラグイン Version 1.0をインストール。”お使いのバージョンのWordPressではテストされてません”と不安な文言が表示されていたが作業に問題はなかった。

ダッシュボート、ツール、ベータテストを選ぶ

スクリーンショット 2015-10-15 09.46.10

最新版ナイトリービルドをチェック、設定を保存し、ベータ版にアップグレードをクリック。
スクリーンショット 2015-10-14 23.46.41

せっかくなのでthemesもTwentySixteenにする。ダッシュボートの表示もこの通りです。

スクリーンショット 2015-10-15 09.56.44

これで新機能が試せるようになりました。まずは、

    REST API
    oEmbed cards

などのあたりですかね。

このサイトではthemesにTwentennSixteenを使ってるので、見た目だけalpha版っぽく見えますが、コアは4.3.1のままです。

Twenty Sixteen requires at least WordPress version 4.4. が発生(0.1.20151013)した

朝イチでびっくりぽん。Wordpressに投稿しよとするとエラーになる。目が覚めました。

Twenty Sixteen requires at least WordPress version 4.4. You are running version 4.3.1. Please upgrade and try again.

確かにversion 4.3.1でTwenty Sixteenを使ってます。Twenty Sixteenを使うにはversion 4.4が要るって言うけど今の最新版は4.3だから4.4はまだリリースされてない。

null
Twenty Sixteen By WordPress.org

こういう時は悩んでいるとどんどん時間が過ぎてしまうので、原因の調査は後にして環境を元に戻す。昨日から変更箇所はThemesだけ。
Themes:Twenty Sixteenを前バージョン(0.1.20151002)に戻したらエラーは出なくなった。

いつかまた同じ事象にでくわしたときのために以下に手順を残しておく。

サーバにログイン。wp-content/themes/twentysixteen配下のstyle.cssで使用中の詳細なバージョンが確認する。
$ grep Version style.css
Version: 0.1.20151013

twentysixteenのRevisionを確認する。
Themesを変更してから問題が発生しているので、とりあえずあ以前の”0.1.20151002″(前週バージョン)に戻すことにする。

適当な場所にThemesを丸ごとダウンロードする。
$ wget -r -np https://themes.svn.wordpress.org/twentysixteen/0.1.20151002/
Themesフォルダにコピーする。ダッシュボードでどっちのThemesなのか区別できるようにstyle.cssファイルの内容を書き換えておく。
Theme Name: Twenty Sixteen
  -> Theme Name: Twenty Sixteen 0.1.20151002

themes配下にディクトリを作ってコピーする
wp-content/themes/twentysixteen_0.1.20151002

ダッシュボードにtwentysixteen_0.1.20151002というThrmesが追加されているので切り替えて完了。

追記:
本件はメタスキーマウェブサイトの記事に詳しく説明されてるのでそちらを参照のこと。ようはTwenty Sixteen内に4.4-alphaなのかバージョンのチェックしてます。履歴を調べたら0.1.20151003版からずっとこの処理が入ってます。自分がブログの更新してなかったので気がつかなかっただけ。この変更でTwenty SixteenはWordpress4.3には適用できなくなったので、この問題にはまるのは適用したTwenty Sixteenをアップデートし続けてきた人だけ。とりあえず暫定対処して0.1.20151002版で運用はできてます。

Elecom WDC-150SU2MをUbuntu 14.04 LTS に挿す

また古いWinddowsXPパソコンのUbuntu化のお話です。普段なら旨い酒が呑めるなんて程度のオファーじゃ引き受けないんですが、今回は会社の役員でもある叔父の依頼なので点数を稼いでおくことにしました。今回、相手にするブツはこれです。

fmv

対象 富士通 FMV LX50M(TV内蔵17型液晶一体型 CeleronD2.93GHz RAM1GB HDD250GB DVDマルチ)
UbuntuOS Ubuntu 14.04 LTS 日本語 Remix
無線LAN子機

あらら、TVチューナーが付いてて、キーボードが無線接続。カードBUSポートが2つある。パソコンと家電が融合した製品。私に言わせてばゲテモノです。2005年はまだこういうのが売ってたんですね。

パソコンの置き場所にはLANケーブルが届かない。インターネットに繋ぐときにはスマホでテザリングすればいいのだけど、パソコン本体に無線LANインターフェースがない。いつものことです。まぁ、この程度のことでは驚きません。近所の電気屋でUSBタイプの無線LAN子機(WDC-150SU2MBK)を購入。しかし叔父はこれが無線LANの子機だと言うことが信じれれないらしい。たしかに他の製品に比べて見かけもアンテナっぽくない。予想していた値段よりも安価すぎることも不安らしい。値段の違いは通信速度と電波の飛距離だし、パソコン本体に処理能力が低いから、WDC-150で十分だと説明したのだけど、私が適当なことを言ってようみえるらしく納得できてない感じ。せめて1ランク上の製品を買おうとするのを制して買い物は終了。別に私もいい加減に選んだ訳じゃありません。電気屋の売り場についてからスマホで型番をググったら成功したっぽいこと書いてるブログの記事があったので、やればできるはずだという見込みがあった。セットアップは私がやるのだから手順の中にコマンド操作があっても問題じゃない。自分の経験から言ってNICの相性に製品の価格は関係ないですから。

部屋に戻るとすぐにFMV LX50MのドライブにUbuntuのCD(DVDだけど)を入れて起動。BIOSを弄ってないのにブートストラップを読み込みを始めた。そのまま放置。
しばらくすると起動音と共にUbuntuが起動した。パソコンのデータバックアップはなし(本当にいいんですかねぇ)。HDDを初期化、Ubuntuをインストールを開始。

型番をキーにしてググるといくつも情報がヒットした。Raspberry Piでやった人もいるのか。ドライバーを入手する必要がある。自分のMacbookでダウンロード、USBメモリにコピーする。
$ git clone https://github.com/lwfinger/rtl8188eu
gitからソースが持ってこれるのはいいね。cloneしたrtl8188euフォルダを丸ごとUSBメモリにコピーする。

FMV LX50Mに戻り、タイムゾーンやパスワードの設定をしてUbuntuのインストールを終わらせてしまう。
インストールが終わるまで30分はかかるはずなので、箱から丁寧にWDC-150を出してUSBポートに挿す。箱と付属品は無くさないように取っておく(ヤフオクで売るときに要る)。
注意:WDC-150はでっぱり部分が小さく形状も丸い。一度USBポートに挿してしまうと手では抜きにずらい。

Ubuntuのインストールが終わったら、USBメモリのrtl8188euフォルダをホームディレクトリーにコピー。このあとはパソコンのtermで作業する。

$ pwd
/home/ubuntu
$ cd rtl8188eu/
$ make all
$ sudo make install
$ ls -l 8188eu.ko(makeが成功したことを確認する)
$ sudo insmod 8188eu.ko
$ lsmod | grep 8188(モジュールの追加が成功したことを確認する)
8188eu 671710 0
$ iwconfig
wlan0 unassociated Nickname:”<WIFI@REALTEK>”
Mode:Managed Frequency=2.412 GHz Access Point: Not-

これでウィンドウマネージャで受信範囲にあるWifiスポットのSIDが表示されるようになる。
あとはSIDを選んでパスワードを入力。Wifi接続ができた。

インターネットに繋がったら何はともあれシステムを最新化する。
$ sudo apt-get update

また、しばらく放置。ダウンロードに時間がかかったが無地に終了。
簡単にUbuntu Unityの操作の説明。とは言ってもWebブラウザとシステム終了のアイコン、IMEのオン/オフのキーだけ教えて終わり。

lan_port

なんかGUI操作の反応も悪い。叔父はもともとインストールされていたWindows XPで使っていたときより早くなったと言いますが、新規でUbuntuをインストールしてシステム環境が処理がキレイになったのでそう感じるだけ。買ってきた無線LANの子機は最初に何もせずにUSBポートに挿しただけではlsmodコマンドでも認識してなかったのだが、実際に手順通りに設定をして通信するところを見た瞬間に不安があったことんなて忘れてしまってましたよ、二人ともね。

Ubuntu CDがプライベートでも役にたった

連休でUbuntu CDが大いに役に立ちました。 Lunixを使える人は、お出かけのときに、荷物にUbuntu CDを忍ばせておくとヒーローになれるかもよ、ってお話です。

Ubuntu Desktop 日本語 Remix
https://www.ubuntulinux.jp/
注意:Ubuntu CDといいながら、UbuntuのサイズはCDの容量(700MB)を超えてます。記録媒体にはDVDが必要です。

家庭で使われているパソコンはたいていノート型パソコンです。DVDドライブ、USBと無線LANアダプタが内蔵されてるので、Ubuntu CDが適応できる範囲は広い。Ubuntu CDの起動は簡単でパソコンのDVDドライブにUbuntu CDを入れて電源を入れて待つだけ。スマホでテザリングしてWiFiでインターネット接続。標準搭載のWebブラウザ(FireFox)から各種Webサービスが使えた。DVDドライブから起動しているのでパソコンのハードディスクのファイルが壊れてても、ハードディスクそのものが故障していてもUbuntu CDの使用に影響はない。UbuntuはFAT32やNTFSなどのWindows系のファイルフォーマットをマウントすることもできるので、起動しなくなってしまったパソコンからCD起動し、ハードディスクのデータをUSBメモリにサルベージするという使い方に利用できる。

Ubuntu CD起動が便利だった点
USBブートなら携帯性は抜群、音は静かになります。しかし起動と動作は数倍遅い。とてもじゃないですが実用に耐えません。ポータブルハードディスクから起動させれば、騒音と反応遅さは解消されます。しかし、これにも問題があって、CDやUSBに比べると媒体として堅牢さに欠けるし衝撃に弱いの雑に扱えない。いざという時に壊れているかもしれないし、出番があるかのかどうかわからない物に投資するには価格が高すぎる。Ubuntu CD起動なら媒体1枚あたりのコストが安価。ハードケースに入れておけば引き出しやカバンに入れっぱなしにしてても壊れません。いつもTDKの「超硬」シリーズを使ってますが、この連休に使ったUbuntu12の媒体も2年前に焼いたものだけどサルベージ作業できました。

やっとデータをサルベージした話です。パソコンの型番は控えてないですが、富士通のFMVでした。新しいパソコンも買ってある(割と頻繁に買い換える人です)。データの引っ越し用にUSBメモリを買ったのに、元側のパソコンでWindowsが起動しないのでコピーができないでいた。販売店の修理にだすとハードディスクのデータは消えてしまう。今までデジカメで撮った旅行の写真があるので諦めきれない様子。電源を入れみたら、起動してデスクトップが表示されたあたりで固まってしまってました。実は裏側でノロノロと起動処理は動いていたのですが、あまりに時間がかかっていたのでフリーズしたと思って電源プッチンしていた。
そこで私が物は試しにとDVDドライブにUbuntu CDを入れて再起動。国産のノートパソコンだと未対応だろうとあまり期待はしていなかったんですが、数分で起動音が鳴って、いつものX Windowsマネージャーが表示された。これはいけるかもしれない。内臓ハードディスクとUSBメモリをマウントさせる。ここから先は持ち主に自分でオペレーションしてもらう。ハードディスクから写真らしきファイルを見つけてはUSBメモリにコピーをしていく。もともとマシンのパワーは十分あるのでUbuntuで起動してからサクサクと動く。最後にUSBメモリをアンマウントして、新しい方のパソコンへ移したら完了です。

媒体ラベルにギークなアートワーク素材を印刷しておくと、いざという時に見つけやすいです。
ubuntu dvd Cover

ちなみに私はパソコンの修理、セットアップのオーダーはお受けしておりません。Ubuntu CDが欲しい方はこちらまで取りに来ていただければ実費でお作りします。