pgrepの-xオプション指定時はコマンド名が15文字以内でないと検索できない件
pgrepの正規表現オプション"-x"であるが、これを指定するとコマンド名が15文字である必要がある。
pgrep -x とすると ^(コマンド名)$ (regcomp()に渡す文字列なのでおそらく文字列中の括弧は正規表現のグルーピングでなく純粋に"(",")"という文字として扱うはず)という正規表現となるようだ(pgrep.c)。
$ which pgrep /usr/bin/pgrep $ rpm -qf /usr/bin/pgrep procps-3.2.8-25.el6.x86_64 $ wget ftp://rpmfind.net/linux/sourceforge/f/fu/fuduntu/sources/procps-3.2.8-15.fc14.src.rpm $ mkdir procps $ cd procps $ rpm2 cpio ../procps-3.2.8-15.fc14.src.rpm | cpio -i $ zcat procps-3.2.8.tar.gz | tar xvof - $ cd procps-3.2.8 $ vi pgrep.c do_regcomp()内401行付近 sprintf (re, "^(%s)$", opt_pattern);
で正規表現の検索対象はどうも、/proc/プロセスID/statというファイルの第二フィールドのようで、そこに先頭15文字までしか書かれていないためだと思われる。