ps -ef
コマンドの結果を取得しようとしていますが、 1 つの問題が発生しています。
$cmd
完全なコマンドを出力せず、コマンド引数間のスペースで分割するだけです。
これを出力します:
jill 61745 8888 0 11:03 ? 00:00:04 php-fpm:
これを印刷する必要がある場合:
jill 61745 8888 0 11:03 ? 00:00:04 php-fpm: pool www
正規表現がこれを達成できることは知っていますが、正確に何をすべきかは明確ではありません。
sub refresh {
open(OPENPIPE, "ps -ef|");
while (<OPENPIPE>) {
my ($uid, $pid, $ppid, $c, $stime, $tty, $time, $cmd) = split();
print "$uid $pid $ppid $c $stime $tty $time $cmd\n";
}
close(OPENPIPE);
}
refresh();