2月 142014
 

自分の知らないところで、あるコマンドが実行されているということはLinuxでは珍しいことではない。代表的なのはcronだ。ただ、cronならcrontab -lをしたり、直接/var/spool/cron/crontabs/*を調べれば、どんなコマンドが実行されるかすぐに調べがつく。しかし、あるイベントが発生したことをトリガーにしてコマンドが実行された場合、なぜそのコマンドが突然呼ばれたのかということに困惑することがある。

例えば、ifupコマンドが実行された場合、/etc/network/if-pre-up.d/etc/network/if-up.d配下にあるコマンドが、ifupの実行中に呼び出されるようになっている。あるコマンドが実行されていることはログなどからわかっているが、どのような経緯で実行されるに至ったかがわからない、という場合には、そのコマンドの親プロセスを辿っていけば調べることができる。

Continue reading »

5月 222013
 

公開鍵/秘密鍵を使ってリモートのSSHサーバーにアクセスする場合、秘密鍵にアクセスするためのパスフレーズを聞かれるようになる。Xが立ち上がっている端末であれば、初回の秘密鍵アクセス時にのみパスフレーズを聞かれるのだが、例えばリモートのSSHサーバーから更に別のSSHサーバーにアクセスしたい場合は、SSHで接続する都度パスフレーズを聞かれて面倒になることがある。

今使っている環境では、メインのLinuxマシンの上で仮想マシン(Linux)を動かしていて、仮想マシンにSSHで入って開発をしている。gitリポジトリはまた別のサーバーにあって、そこにもSSHでつなぐ必要がある。リモートのgitリポジトリにアクセスする度に、パスフレーズを聞かれるのがウザかったので、仮想マシンにSSHでログインした後、手動でssh-agentを立ち上げてssh-addで秘密鍵を登録(このときパスフレーズを聞かれる)していたのだが、この手作業自体がまた面倒になった。

Continue reading »

1月 252012
 

1月13日(金)にPalo Altoで行われたJTPAのギークサロンに参加してきた。今回は参加者がラップトップ持ち込みでコーディングしていくハッカソン形式で、会場入りする前までにHadoopが使える環境を自前で用意しておく必要があった。

前編では、Hadoopを使って計算処理をするための準備として、EC2上にHadoopクラスタを構築する方法を紹介した。後編では実際にギークサロンで手を動かしてやったことを中心に紹介していこう。

Continue reading »

1月 062012
 

コマンドラインをviモードで編集するのエントリで「それどうやんの!?」と訊いてきた知人から、後日こんなメールをもらった。

viモードにしてその延長上でコマンドの結果に対してpromptで編集(?)みたいのってできるのですかね?

例えば

$ cat somefile.txt  # これにファイル名が幾つか入っている
src/file1.txt
src/file2.txt

でここでESCを押すとviモードになってjとかkとかでfile1.txtfile2.txtがチラチラと見える。
最終的にはiとか使って

$ vi src/file2.txt

とかがぱっとできたりするといいなーと思っている。

Continue reading »

1月 022012
 

デジカメで撮った写真をブログなどにアップロードする場合に、高解像度がゆえにファイルサイズが無駄にデカくて、アップロードに時間がかかってしまったり、あるいはアップロード可能なファイルサイズの上限に達してしまって、写真のアップロードができなかったりすることがある。ちなみにWordPressの3.1系では、ファイルサイズの上限が2MBとかなり小さめ。

Continue reading »

12月 302011
 

プログラミングを始めてから現在に至るまで開発してきたアプリケーションの実行環境が、Windows→UNIX(Solaris)→Linuxと移り変わってきたこともあり開発環境も直近10年はUNIX/Linux。エディタも10年以上vim(Solarisではvi)を使い続けているだけに、身体にvimのキー操作感が染み付いてしまっている。ソースの編集だけでなく、コマンドラインもviキーバインディングで編集しているわけだが、先日その様子を知人に見せたときに「それどうやんの!?」と訊かれたので、意外に知らない人が多いのではと。

Continue reading »

12月 282011
 

bashを使ってネットワークアドレスの設定をするためのスクリプトを書いてたときに、入力されたサブネットマスクが正しいかどうかを検証するコマンドがなかったので自前で作ることにした。まず、入力値がIPv4アドレスとして正しいかどうかの判定は、正規表現を使った例などもあるが、ipcalcコマンドを使った方が楽チン。

#!/bin/bash

read mask
if ! ipcalc -c $mask > /dev/null 2>&1; then
    echo "ERROR: Invalid format"
    exit 1
fi

Continue reading »