VMware Tools の手動アップグレード(自分用メモ)

ヘルプページには初回用の操作も書いてあって説明が分岐して読むのが疲れるので、手動アップグレードの手続きを自分用にメモしておく。

$ sudo su
[sudo] uname のパスワード:
# mount /dev/cdrom /mnt/cdrom
# cd /tmp
# rm -rf vmware-tools-distrib
# ls /mnt/cdrom

VMwareTools-xxx-yyy.tar.gz が見えてるはず

# tar zxpf /mnt/cdrom/VMwareTools-x.x.x-yyyy.tar.gz
# cd vmware-tools-distrib
# ./vmware-install.pl

質問されたら全部Enterで返事しておく。

(自分用メモ)omake -P が停止するトラブル(fam)とその解決

■短気な人のためのまとめ■
omake -P が「om_notify_open」とか言い出してコケたら fam が止まってることを疑って、 $sudo service fam start しておけ

■症状■

omake -P& してたら

*** omake error:
Failure: om_notify_open: (null)

[2]+ 終了 123 omake -P

というメッセージが出て、omake が止まってしまった。 omake -P をもう一度走らせてみても、同じメッセージを吐いて omake が終了してしまう。 P オプションを付けずに omake を動かすぶんには何も支障はなかった。

■原因■
om_notify_open でググると、どうやら fam が止まってしまったらしい。

■そもそも fam is what■
fam とは file alternation monitor で、ファイルをリアルタイムで監視してくれているデーモン。 omake が P オプションで動作するときのリアルタイムファイル監視は、このデーモンが提供している。

■対策■
fam が止まってるらしいので、fam を再起動すればよい。

$ sudo service fam start

無事に omake -P も動くようになった。

■そもそもなぜ fam が止まったのか(未解決)■
omake が死ぬ直前に、omake -P が監視しているディレクトリで2000個近くのファイルを一度に rm した。関係あるかもしれないし、ないかもしれない。

■そもそも本当に fam が止まっていたのか■
$ ps -x | grep "fam"
してもっとちゃんと確認すればよかったと思いました(小学生並みの感想)。

■やらないほうがいいかもしれないこと■
サービスの名前から locate して init.d あたりにあるやつを指定して $ sudo hogehoge start みたいなことをすると良くないかもしれないそうです。

■ fam が入ってない人はどうすればいいの■
$ sudo apt-get install fam

(自分用メモ)sort して uniq しても同じ行が残る問題とその解決

■症状■
記事タイトルの通り、sort して uniq したのにエディタで見ると同じ行が並んで残ってしまう。

■原因■
改行コードだけで異なる行が入力テキストに含まれていた。

■解決方法■
$ sed ‘s/\r//’ input.txt | sort -u | uniq > input-u.txt

■参考にしたページ■
http://stackoverflow.com/questions/15493774/sort-filename-uniq-does-not-work-on-large-files

treeとかいうぐう有能なコマンドwwwww

ディレクトリの構成をアスキーアートで示したい場合があります。
たとえば

A
├── b.txt
├── c.txt
└── D
    ├── e.txt
    ├── f.txt
    ├── G
    └── H

みたいな感じに。これを作ってくれるコマンドが tree です。(このコマンドを知らなくて、今までは手でちまちま書いてました。)
Ubuntuの人は

$ sudo apt-get install tree

Windows+MSYS2 の人は

$ pacman -S tree

linuxからの印刷(自分用メモ)

都合によりメインのデスクトップマシンにUbuntuを入れて使っている。プリンタを操作する lp コマンドを使うようになったがオプションを覚えるのが辛いので、よく使うコマンドをまとめて ~/.bashrc に次のように書いておくことにした:

lp2(){
  for x in $@
  do
  if test -f $x
  then 
  lp $x -o sides=two-sided-long-edge
  fi
  done
}

pptlp(){
  for x in $@
  do
  if test -f $x
  then 
  lp $x -o sides=two-sided-long-edge -o number-up=2
  fi
  done
}

lp2 は両面印刷に、pptlp はパワポ資料から作ったPDFを印刷するために使っている。


$ lp2 foo.pdf bar.pdf baz.pdf

のように使う。

ライブラリ

僕はライブラリとか知りたいとあんまし思わないんですが,
なんで皆さんはライブラリとかを珍重するんでしょうか.バイト列じゃん.
わかんない.
nmとかもわかんない.
得るものが少ないとおもいます.
したがって技術系同人誌に載ってるABI(アプリケーションバイナリインタフェース)をテーマにしたラブコメというかライブラリコメディもよくわかりません.ただのバイト列です.
さらにそもそもOSはなぜライブラリを扱うのですか.
あまつさえ動的にリンクしたりするのですか.僕は賛成ですが.いや賛成なのはライブラリが好きだからじゃないです.
動的にリンクすることで実行時まで何かを遅延できるのがなんとなくいいからです.
ぼくはOSとかリンカとかローダみたいなバイナリユーティリティは大好きです.
いや問題なのはOSじゃなくてライブラリです.
ライブラリが見えていてもかまいませんが,ただのバイト列だとおもいます.
いやそうではなく,なぜC呼び出し規約で読めるようなバイト列を大事にするかということです.
僕は賛成ですが.
間違いました.
もういいです.

linux:圧縮ファイルの解凍コマンドをすぐに思い出せない

最近になって久しぶりに Linux で作業するようになった.(実質初心者).色々足りないソフトを入れるために *.tar.gz だとか *.tar.bz2 を落としてきて解凍して…などとやるときのコマンド(のオプション)を思い出すのに数秒かかっていてもったいないので .bashrc に

extract(){
 for x in $@
 do
 if test -f $x
 then
 case $x in
 *".tar.gz" | *".tgz" ) tar zxf $x;;
 *".gz" | *".gzip" ) gunzip $x;;
 *".tar") tar xf $x;;
 *".tar.bz2" | *".tbz2" ) tar jxf $x;;
 *".bz2" ) bunzip2 $x;;
 *) echo "$x : non-archive";;
 esac
 fi
 done
}

と書いておくことにした.これで

$ extract  aaa.tar  bbb.tar.gz  ccc.gz
$ extract ddd.bz2  eee.tar.bz2  fff.tgz  ggg.tbz2

みたいに書けることになった.

[追記2014/04/25]
Kiwamu Okabe さんにコメントで教えていただいたのですが,最近は

$ tar xf foo

でいけちゃうようになってるらしいです.