HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

「プロセスが使用中のファイルを調べる」で遊んでみた

ふと、何か(何)を見ていて、その関連で以下の記事をざっと読んで、ちょっと遊んでみたメモ(謎)。

なんで「PHP」というタグまで付いているかは読めば分かる(ぇ‥

事前準備

遊ぶためのCentOS 6環境にはlsofコマンドが無かったので、以下の手順で導入。

$ su -
# yum -y install lsof
# exit
$ 

本題

単にやってみたかっただけなので、PHPで以下のプログラムを書いてみた。

<?php

$fp1 = fopen(__FILE__, "r");
exec('lsof ' . __FILE__, $a1);
print_r($a1);

$fp2 = fopen(__FILE__, "a");
exec('lsof ' . __FILE__, $a2);
print_r($a2);

fclose($fp1);
fclose($fp2);

単に、PHPスクリプトファイル自身をfopenして、lsofを実行して‥というのを「"r"」「"a"」の2つのオープンモードで次々に開いて試しているだけ。(「"w"」モードで開いたらスクリプトファイルの内容が消えちゃうからね(謎))

で、これをhoge.phpに保存して、実行してみる。

$ php hoge.php
Array
(
    [0] => COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
    [1] => php     3616 hhelibex    3r   REG  253,0      185 163270 /home/hhelibex/work/2015-0602-01/hoge.php
)
Array
(
    [0] => COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
    [1] => php     3616 hhelibex    3r   REG  253,0      185 163270 /home/hhelibex/work/2015-0602-01/hoge.php
    [2] => php     3616 hhelibex    4r   REG  253,0      185 163270 /home/hhelibex/work/2015-0602-01/hoge.php
)
$ 

できたできた。それだけ(謎)。

蛇足

別のUbuntu 14.04 LTS環境では、何もしなくてもlsofコマンドが使えた。
その環境で必要なパッケージ等は入れているので、初期状態(minimal)で使えるかどうかは分からないが(ぇ‥