Lionでターミナル起動時に「.bashrc」を読み込ませる

Lionにしてターミナルが寂しいなぁと思ったら、「.bashrc」が読み込まれてないことに気付く。
今さらながら、気付くのが遅いよ。俺。

こういう理由だったんですね。
http://www.dejavuz.com/root-jobs/7420.html
言われて納得、と言うか、ちょっと不親切じゃない?bashが起動するわけだし?と思ったりする。
ターミナル使うんだったら、そんくらい自分でやれよ、というのであれば、ごめんなさい。

てなわけで、ホームディレクトリに以下の「.bash_profile」を置く。
------------------------------------------------------------
$ cat ~/.bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi
------------------------------------------------------------

あるいは、
ターミナルの「環境設定」>「設定」>「シェル」で
「コマンドを実行」にチェックを入れて「. .bashrc」と書くのも同じ。
Terminal.appの環境設定
ただし、ターミナルを開いたときに
------------------------------------------------------------
Last login: Fri Sep 16 17:45:03 on ttys000
Air01:~ hogehoge$ . .bashrc
Air01:~ hogehoge$
------------------------------------------------------------
と、「. .bashrc」が1行余分に表示される。

不可視ファイル(と言ってもbashならあってもおかしくない)をつくるか、
アプリケーションの環境設定で合わせるかは、個人のお好みで。
お作法としては、「.bash_profile」を作っておいた方がよろしいかと思います。

ちなみにSnow Leopardの.bash_profileはこんな感じ
------------------------------------------------------------
$ system_profiler SPSoftwareDataType |grep System\ Version
System Version: Mac OS X 10.6.8 (10K549)

$ cat .bash_profile
#.bash_profile

#Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

#User specific environment and startup programs
BASH_ENV=$HOME/.bashrc
USERNAME=""

export USERNAME BASH_ENV PATH LESSOPEN
------------------------------------------------------------

============================================================
■おまけ

また、今さらシリーズ。
環境変数見てたら、
------------------------------------------------------------
$ env |grep TMP
TMPDIR=/var/folders/rk/qg5pymk52q90dxk3fmzw4y_80000gn/T/
------------------------------------------------------------
環境変数でもTempraryのディレクトリ呼び出せるんだった。

mktemp -d /tmp/tmp.XXX

とかで、作業用のテンポラリのディレクトリを作ってた。
Linux(今見たのはDebian)だと、デフォルトで環境変数の中に自分のテンポラリのディレクトリって無いんだよね。
Unix方言をまた一つお勉強。



0 comments

USBメモリでRAID

余っているUSBメモリを集めてRAID化できないか、というテスト。
うまくいけば、簡易SSDとして何かのシステムを入れてサーバでも動かしてしまうという目録。
元ネタはMacFanかMac Peopleに載っていました。

部材
  • 別部署からいただいてきたUSBハブ
  • 自前の余りUSBメモリ(詳細は下記のディスクユーティリティ参照)

このように接続

(SunDiskの8GBのが安かったものの、横幅があるので隣のポートと干渉して、意外と使い物にならないと購入した後に判明。
よくある秋葉原でのジャンク買い物orz...)



ディスクユーティリティを使って、RAIDを構築。
一応、スピード重視と言うことで「ストライプされたRAIDセット」を選択。
7.2GB+3.4GB+1.8GB=12.4GBではなく、5.4GBとなりました。



ブロックサイズは32Kとデフォルトのまま



これで簡単にベンチマークテスト


もう一つのUSBポートに差し込んだUSBメモリ(FAT32)にある、debianのディスクイメージ(412MB)を、USBのRAIDとデスクトップと、試しにネットワークボリューム(Xserve+XRAID)にコピーしてみる。



一度システム再起動し、今度はデスクトップ→USBのRAIDの順でコピーしてみる。


やっぱり、というか、思っていたより、遅いことが判明。
原因として考えられるのが、
  • USBメモリの書き込み速度が遅い。結構使い込んでるのもあるし(認識が甘いのも含んでる。そんなの使うなって)。
  • USBポートからUSBポートへの転送で、USBチップに負担思いっきりかけてそう(これがFirewire→USBなら違ったかも)。
  • USBハブのとこでボトルネック発生?(¥1000程度のUSBハブだしね)。
  • そもそもUSB2.0に期待してはいけない(400Mbps。1秒で60Mbpsというけど、絶対にそんなことはない)。

ということで、ネタで終わってしまいました。







0 comments

対象Macの環境調査

書き込みが1個だけだとさみしいので、コネタ追加します。
こういう仕事をしていると、こんな相談をたまに受けます。
------------------------------------------------------------
友人:「Macの調子が悪いの!何とかして!」
→お腹が痛い、の一言だけで治療できるお医者さんはいませんよね。
私「で、お使いのMacは?」
友人「会社のMac」
→正解!けど違う!
私「OSは何ですか?」
友人「そりゃMacのOSに決まってるじゃない!」
→NetBSDだったら、嫁入り前の顔をグーでぶん殴ってますわな。
私「それで、具体的にはどのような症状なんですか?」
友人「メールが読めないの!」
→メールサーバに接続できないのか、送られてきたメールが化けているのか、
それとも相手の心を読めない私が悪いのか?深く考えさせられてしまいます。
------------------------------------------------------------
てなわけで(?)、相手の環境を吐き出すAutomatorスクリプトを作成しました。
元ネタは、たにぐちさんのBlogです。ありがとうございます。m(_ _)m

細かい内容は、下のスクリプトの中身を見て下さい。

ただ、シェルスクリプトを走らせて、テキストに書き出し+zip圧縮してるだけです。
お好みに応じて「$ system_profiler -listDataTypes」の内容を追加してみてください。
ほいで、なんで、書き出したものをzip圧縮するか?というと、
こういうトラブルが起きてる環境(人)で、テキスト添付とか、本文にコピペをお願いすると、
文字化けしたり、謎めいたものが送られてくる可能性があるので。
これならWindowsに持っていってメール送信も可能ですし。
トラブルシューティングの情報収集は、地味・単純・確実な方法で。

つたないスクリプトなんで、突っ込み等大歓迎です。

そもそも、なんで、Automatorか?というと、
  • 初心者にターミナルを開いてコマンドを打ってもらうのは無理。
→その昔「ネットに書いてあったとおりにコマンドを打ち込んだら、データが消えた。どうしよう?」という相談もありました。
(どうしようもないので、そのまま手を触れず、DataRescueを買ってください、と適切なアドバイス)
  • 状況を聞いても、こちらが求めている答えは、なかなか返ってこない。
→前述の通り。
Macの使用環境の話だったのに、男子フィギュアのお尻の魅力について、腐女子から1時間ほど語られたこともあります。
(この仕事の半分は、人の話を聞くことなんだなぁ…と勉強させていただきました)

ワークフロー(+アプリケーション)は、v10.4とv10.5以降の2種類あります(ワークフローにもバージョンあるんですね)。
v10.3以前は...新しいMacに買い換えてもらいましょう。

以下がAutomatorの内容です。
------------------------------------------------------------
echo ${DATE} >> ${DIR}/${TXT}
echo "####################" >> ${DIR}/${TXT}
echo "system_profiler SPHardwareDataType SPSoftwareDataType SPNetworkDataType SPPowerDataType" >> ${DIR}/${TXT}
system_profiler SPHardwareDataType SPSoftwareDataType SPNetworkDataType SPPowerDataType >> ${DIR}/${TXT}
echo "####################" >> ${DIR}/${TXT}
echo "ifconfig -a" >> ${DIR}/${TXT}
ifconfig -a >> ${DIR}/${TXT}
echo "####################" >> ${DIR}/${TXT}
echo "df -h" >> ${DIR}/${TXT}
df -h >> ${DIR}/${TXT}
echo "####################" >> ${DIR}/${TXT}
echo "ps auxw" >> ${DIR}/${TXT}
ps auxw >> ${DIR}/${TXT}
echo "####################" >> ${DIR}/${TXT}

cd $DIR
zip ${TXT}.zip ${TXT}

rm -rf ${DIR}/${TXT}
------------------------------------------------------------
一応、v10.4、v10.5、v10.6で動作確認済み。

ダウンロードファイル:"11_0415_使用環境出力.workflow.zip"
ダウンロードファイル:"11_0415_使用環境出力Tiger.workflow.zip"
ダウンロードファイル:"11_0415_使用環境出力.app.zip"
ダウンロードファイル:"11_0415_使用環境出力Tiger.app.zip"

0 comments

デスクトップキャプチャ取得スクリプト

Mac OS X Server Night #16のLightinig Talkで紹介した、
デスクトップ(+開いているアプリケーション)のキャプチャを取って、
メールで送信するスクリプトです。

cronやLaunchAgentsとかで自動実行すれば、サーバの状態を監視できます。
"内側"から送ってくるので、外部からサーバへアクセスできない環境でも
サーバの稼働状況が分かります。
(もちろん、操作はできません。けど、ついやっちゃうんですよ。キャプチャ画面のクリックを)

============================================================
#!/bin/bash

TIME=`date +%m_%d_%H%M`

#Get loginwindow.app PID
PROSID=`ps ax |grep loginwindow.app | head -1 | awk '{print $1}'`

#Capture
sudo launchctl bsexec $PROSID screencapture -t jpg ¥
/Users/[ユーザ名]/Desktop/capture.jpg

#Send mail
/usr/bin/uuencode /Users/[ユーザ名]/Desktop/capture.jpg ¥
/Users/[ユーザ名]/Desktop/${TIME}capture.jpg | ¥
/usr/bin/mail -s "ServerMonitor_${TIME}" 送信先メールアドレス
============================================================

Mac OS X Serverで動作しますが、クライアント版のMacOS Xではメールの送信はできません。
そんな時は、Dropboxとかにmvとかcpで持って行けば、外部からの監視も可能。
デバイス依存無し、デスクトップの状況が送られてくるので、サーバの状況が手に取るように分かる!

(メールが送られてこない時は…かなり重大な障害が発生したということですね!わかりやすい!)

我ながらもんのすごい単純な方法ですが、追加インストール無しで、外部アクセス不可にも対応。
一目でサーバの状況が分かる監視方法です。

0 comments