[linux]ncコマンドによるファイル転送

LAN内のlinux同士でファイル転送したいが、FTPやNFSのサーバ設定まではしたくない時がある。
ncコマンドを使うと簡単にファイルを転送できる。
ncはnetcat。ネットワーク越しにcatできるわけだ。

待ち受け側ではポート番号を指定して、プロセスを起動することによってサーバになる。

[java]Atomic*クラスのlazySetメソッド

JavaのAtomic*クラス群にlazySetというメソッドがあるけどなんだかよくわからなかった。ので、調べてみました。

APIリファレンスを見ても、
「指定された値に最終的に設定します。」
と書かれているだけで、通常のsetと何が違うのかよくわからない。

Java8 API仕様 http://docs.oracle.com/javase/jp/8/api/

以下に一応説明があるけど、結局どんな時に使うのか。。。

https://docs.oracle.com/javase/jp/8/api/java/util/concurrent/atomic/package-summary.html

結局、見つかったのはDoug Lea氏のコメント。

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6275329

もう他のスレッドが見る必要のない、削除されたオブジェクトにGCを促すためにnullを入れたいけど、
パフォーマンスのために同期したくないって時に使うみたい。
まあ、いつかnullが入ると。

[unix]lsofコマンド

あるファイルを延々となにかのプロセスが読み込んだり、書き込んだりしていて、その正体を知りたい時がある。 そんなときはlsofコマンドを使うのがいい。
例えば、以下のようにファイルを開いておいて

$ tail -f ~/some.log

別のシェルでlsofコマンドを使うと、こんな感じで表示される。

$ lsof ~/some.log
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
tail    3901 username  3r   REG    8,7      780 1976760 some.log

逆にコマンド名やプロセスIDを指定して、開いているファイルを表示することもできる。

# -cでコマンド名を指定
$ lsof -c tail
# -pでプロセスIDを指定
$ lsof -p 3901