古いLinuxのcpuinfo
諸事情でesxi5のvmでcentos3.9をインストールして触っていたのですが、/proc/cpuinfoをみたら Core i5 が Mobile Pentium になってた。やったね!。Dixonってメンドシーノじゃないですか。カッパーマインより古いCPUと判断されるのはちょっとビックリ。
CentOS3.9のcpuinfo
$ cat /etc/redhat-release CentOS release 3.9 (Final) $ cat /proc/cpuinfo | grep -3 "model name" vendor_id : GenuineIntel cpu family : 6 model : 5 model name : Mobile Pentium II (Dixon) stepping : 5 cpu MHz : 2525.888 cache size : 256 KB
こっちはCentOS5.8のcpuinfo
$ cat /etc/redhat-release CentOS release 5.8 (Final) $ cat /proc/cpuinfo | grep -3 "model name" vendor_id : GenuineIntel cpu family : 6 model : 37 model name : Intel(R) Core(TM) i5 CPU M 460 @ 2.53GHz stepping : 5 cpu MHz : 2527.000 cache size : 3072 KB
base64の備忘録
とりあえず、base64をしたかったのですが、調べると色々な方法があるなぁ、と思ったので備忘録。
opensslコマンド
一番よく使う方法かな。
$ echo -n dharry | openssl enc -base64 ZGhhcnJ5 $ echo "ZGhhcnJ5" | openssl enc -d -base64; echo dharry
base64コマンド
Linuxだとこれかな。coreutilsは便利だけど他のUNIXだとなかったりするんだな。
$ echo -n dharry | base64 ZGhhcnJ5 $ echo -n "ZGhhcnJ5" | base64 -d; echo dharry $ rpm -qf /usr/bin/base64 coreutils-5.97-34.el5_8.1
nkfコマンド
これはこれで便利
$ echo -n "dharry"| nkf -MB; echo ZGhhcnJ5 $ echo -n "ZGhhcnJ5"| nkf -mB; echo dharry
perl
perlはどのUNIXでもあるから一番楽かも。でもHP-UX11.00ぐらいだと厳しい。
$ echo -n "dharry" | perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' ZGhhcnJ5 $ echo -n "ZGhhcnJ5" | perl -MMIME::Base64 -ne 'print decode_base64($_)'; echo dharry
ruby
$ echo -n dharry | ruby -r base64 -e 'puts Base64.encode64(STDIN.read)' ZGhhcnJ5 $ echo -n ZGhhcnJ5 | ruby -r base64 -e 'puts Base64.decode64(STDIN.read)' dharry
python
$ echo -n dharry | python -c "import base64,sys; base64.encode(sys.stdin,sys.stdout)" ZGhhcnJ5 $ echo -n ZGhhcnJ5 | python -c "import base64,sys; base64.decode(sys.stdin,sys.stdout)" dharry
PowerShell
コマンドレットは便利と思ったけどいまだになじめない。慣れは重要ですね。
PS C:\Users\dharry> $str = "dharry" PS C:\Users\dharry> $str = [Convert]::ToBase64String([System.Text.Encoding]::GetEncoding("iso-2022-jp").GetBytes($str)) PS C:\Users\dharry> $str ZGhhcnJ5
tcl
tclshで試してみた。centosのtclだとbase64ライブラリがなかったのでActiveStateのActiveTCL8.5.11.1で確認。
% package require base64 2.4.2 % base64::encode "dharry" ZGhhcnJ5
curl
apacheのbasic認証に渡すときはbase64にしているのでwgetもcurlでもいけるはずだ。でも少しawkで頑張れば行けると思うけど面倒だから使わない。
$ curl -vu dharry: http://example.com 2>&1 | awk '{ if($0 ~/Authorization/) print $(NF)}' ZGhhcnJ5Og== $ echo -n ":" | base64 Og==
vbs
なんだかvbsが嫌になってきた。
Private Function base64(str) Dim dom, elem, bin, result Set st = CreateObject("ADODB.Stream") With st .Type = 2 .Charset = "Shift-JIS" .Open .WriteText str .Position = 0 .Type = 1 bin = st.Read .Close End With Set dom = CreateObject("Microsoft.XMLDOM") Set elem = dom.CreateElement("tmp") elem.DataType = "bin.base64" elem.NodeTypedValue = bin result = elem.Text base64 = result End Function Wscript.echo base64("dharry")
読み方がわからないUNIXコマンドはどうすりゃいいんだ。
この業界は読み方がアバウトすぎる。だから間違っていても俺は強い意志でこう読みたい、と思ったので備忘録にする。*1
ASUS
いきなりUNIXコマンドじゃないけど、俺はずっとアサステックです。公式ではアスースらしい。
ASUSの日本での読み方は「アスース」が正式です。日本参入時から今まで、1度も変更したことはありません。呼び辛いと言われることは確かに多いのですが、社名なのでお許しください。
http://twitter.com/#!/asusjp/status/17064855018147840
Youtubeの英語発音ではエイサスとしか聞こえない。(2m02sあたり)
ASUSの公式サイトの「ブランドネームの由来」だとペガサスからきているから "〜〜サス" がになっていないと格好がつかないと思う。なので俺はアサスでいく。
芸術や学問でのインスピレーションの象徴となっているギリシャ神話の空飛ぶ白馬“ペガサス・Pegasus”、この最後の四文字がASUSの由来です。「市場に問うすべての製品に高レベルの品質と独創性を吹き込むことにより、機知に富むペガサスが象徴する強さ、創造性、純粋さを具体的に実現する」という意味を込めてのことです。
http://www.asus.co.jp/About_ASUS/about_asus_history_name/
SUSE Linux
そもそも SuSE と書いてしまう癖が抜けない。昔からスージーと読んでいます。でもオープンソースカンファレンスでノベルの人に聞いてみたら、「スーゼです」と言われた記憶がある。検索してみたらこういうのもあった。
一方、スペルから類推して発音してると思われる人は、スセ、スーゼー、スージーなど
http://lists.opensuse.org/opensuse-ja/2004-09/msg00007.html
いろいろ。U.S. でもいろいろな発音をする人がいますよ :-).
NovellServicesをみていると英語圏の発音だとスーセの気がしてきた。でもスージーでいく。(8sあたり)
eval
ずっとイーバル。evaluate だから エバルかなと思ったけど Youtubeでの英語発音は俺耳だとイバルとしか聞こえん。(6mあたり)
よく考えれば、C言語やJavaの列挙型 enum もイーナムと自分は読んでいる。enumeration だからといってエヌーとかいうやつはいないと思う。Youtubeでイーナムと発音している人がいた(6sあたり)。つまりイーバルでこのまま行けということだな。なんだか心が温まる気分になったよ。
sudo
エスユードゥーと必ず読む。su を スー というのが恥ずかしくて エスユー と読んでいます。そのためsudoを スードゥー と読むことに抵抗があります。世間ではどうであるか調べてみると、へ? スドーってなんだよ。
しかし、このオッサンは 「スードゥー」と力強く発音していました。どうすりゃいいんだ。(55sあたり)
HI-UX
日立のUNIX。ハイユーエックスって読んでいた。今更なんと読もうが興味はない。
ノスタルジックな気持ちになれるかもしれないLinux/UNIXのコマンド
昔はよく使ってたけど今は全く使うことがないコマンド、もしくはきっと便利に使えるであろうと懐に忍び込ませておいたのに全く使うことがなかったコマンドって結構ありますよね。
logname
suでユーザ変更してもログインしたときのユーザを表示してくれる。いつか便利に使えると信じていたけど未だに使ったことがない。
$ logname dharry $ su - Password: # logname dharry
banner
アスキーなものを作ってくれる。昔は楽しくbannerコマンドを撃ちまくっていたのにいつの間にか使わなくなった。私は大人になってしまったんだろうか。
$ banner banner ##### ## # # # # ###### ##### # # # # ## # ## # # # # ##### # # # # # # # # ##### # # # # ###### # # # # # # # ##### # # # # # ## # ## # # # ##### # # # # # # ###### # #
cal
カレンダーを表示。これも使わなくなった。使わなくなった諸悪の根源はGoogleカレンダーに違いない。
$ cal February 2011 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
pkill
マッチしたプロセスをすべて殺してくれる。一度バグで増え続けるプロセスをpkillでぶっ殺したときは「なんて使えるんだ!」と感動すらしたけど、あれ以来使ってない。あーあ、rootでpkillしてえなぁ。
$ pkill [pattern]
rev
文字列を逆にしてくれる。当時「どこで使うんだ?」と思ったがやっぱり使う機会は一度もなかった。
$ cat test.sh #!/bin/sh echo "hello world" exit 0 $ rev test.sh hs/nib/!# "dlrow olleh" ohce 0 tixe
awkで代用だとこんな感じかな。
$ awk '{ len=length($0); do { printf substr($0,len,1)} while(--len > 0); printf "\n" }' test.sh hs/nib/!# "dlrow olleh" ohce 0 tixe
ワンライナーでtarバックアップ
Sourceforge.jp Magazineで連載?中のOne-Linerです。
忘れないように自分が昔から使っているのと新しく覚えたものを備忘録。
http://sourceforge.jp/magazine/09/01/14/0134202
Tarアーカイブとバックアップ
- 普通のtarとgzip
$ tar cvf dir.tar ./dir $ gzip -1 dir.tar
- GNUtarでtgz
$ tar cvzf dir.tgz ./dir
- GNUtarがない場合をパイプを使って。option '-[1-9]' は 圧縮時間を速くするか圧縮率を上げるか。
$ tar cf - ./dir | gzip -1 > dir.tar.gz
- もちろんgzipではなく高圧縮のbzip2でもOK.
$ tar cf - ./dir | bzip2 -9 > dir.tar.bz2
- もちろんリダイレクトではなくddに変更するのもあり。*1
$ tar czf - ./dir | dd of=dir.tgz
- GNUtarだと'-C'でアーカイブ展開先を指定できる。
$ tar xvzf dir.tar -C ./path/to/hoge
- tarでバルクコピー。tarはメタを保持するので便利。(cpでコピーするとシンボリックリンクとかあるとやべーことになるかもしれないし)
$ tar cf - ./test_src | (cd ./path/to/test_dest; tar xvf - )
- GNUtarでバルクコピーなら'-C'でコピー先を指定できる。
$ tar cf - ./test_src | tar xvf - -C ./test_dest/
- tarのバルクコピーはsshやrshを使って別マシンへ送りつけることも可能。
$ tar cf - ./test_src | ssh user@server.com "(cd /path/to/test_dest; tar xvf - )"
- リモートサーバへのtarバルクコピーでもGNUtarなら'-C'オプションで展開先指定できる。
$ tar cf - ./test_src | ssh user@server.com tar xvf - -C /path/to/test_dest
- サイズが大きい場合はGNUtarで圧縮してリモートサーバへバルクコピー。
$ tar czf - ./test_src | ssh user@server.com "(cd /path/to/test_dest; tar xvzf - )"
- そもそもリモートサーバには圧縮アーカイブでバックアップにしたい。
$ tar czf - ./test_src | ssh user@server.com "cat - > /path/to/test_src.tgz"
- 古いUNIX機にはGNUtarなんかねーんだよ、という状態でもリモートサーバに圧縮アーカイブでバックアップ。
$ tar cf - ./test_src | ssh user@server.com "gzip -1 > /path/to/test_src.tar.gz"
- サイズが大きいからできるだけ高速になるようにddでおまじない。(きっと気休めだけど)
$ tar czf - ./test_src | ssh user@server.com dd bs=4096 of=/path/to/test_src.tar.gz
もしかしたら役に立つかもしれない小技
- リモートサーバにテスト用の圧縮できないゴミファイル作成。*2
$ cat /dev/urandom | rsh -l user server.com "cat - > junkfile.txt"
- mysqldumpしたデータをリモートサーバに日付付きでバックアップ
$ mysqldump -u root -x --all-databases | ssh user@server.com "gzip -1 > /path/to/backup.`date +%Y%m%d`.gz"
- リダイレクトうざいって人はddに変更。(ローカル/リモート)圧縮するところは気分で。
$ mysqldump -u root -x --all-databases | gzip -1 | ssh user@server.com dd of=/path/to/backup.`date +%Y%m%d`.gz
- ログインに失敗(もしくはブルートフォースアタック)しているログをメールで送るんだけど、理解不能な社内ルールのためにメール送信できるサーバが限定されている場合。
$ awk '{ if($8=="failure;") print }' secure | ssh user@server.com mail -s 'failure_check' hoge@example.co.jp
- 暇なのでパイプたくさん繋げてみる
$ tar cf - /path/to/src | gzip -c | cat - | gzip -cd | tar xvf - -C /path/to/dest
参考サイト
- http://sourceforge.jp/magazine/09/01/14/0134202
- http://flogblog.blog82.fc2.com/blog-entry-12.html
- http://ultra.ap.krakow.pl/~bar/DOC/ssh_backup.html
- http://vikslinuxtips.blogspot.com/2007/08/tarssh.html
- http://wiki.nbj.co.jp/devel/index.htm?LinuxTips#i15
- http://www.geekpage.jp/blog/?id=2007/1/11
- http://www.hondarer-soft.com/japan/pubwiki.cgi?tar
- http://www.otsune.com/diary/2007/06/17/1.html#200706171