pidofコマンド
メモ程度に
今日、職場でchef職人(私はまだchef全然触ってないです。電子書籍も買ったのにもったいない…)との会話の中で
chef「いやぁ、/etc/rc.d/init.d/hoge statusの結果を見てセットアップするかしないかを判断してるみたいなんですが、うまくいかないんですよねぇ」 私 「status自体は/etc/rc.d/init.d/functionsの中で定義されてるんで、それをsourceで取り込んで……ないですねぇ。 この場合、戻り値は127になる……、あれ、コイツexit 0で抜けてやがりますねぇ」 chef「ひゃー」
なんて会話をして、もう面倒くさいから/etc/rc.d/init.d/hogeをいじっている中で見つけたのが冒頭のpidofコマンド。
どうやらプロセス名を指定するとそのプロセスIDを返してくれる模様。ただしプロセス名は完全一致。
というか、フルパス実行していた時のbasenameと一致すればいいみたい。
例:
$ ps -ef |grep http[d] httpd 10161 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10162 26827 0 Aug31 ? 00:00:02 /usr/local/apache2/bin/httpd httpd 10163 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10164 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10165 26827 0 Aug31 ? 00:00:00 /usr/local/apache2/bin/httpd httpd 10166 26827 0 Aug31 ? 00:00:02 /usr/local/apache2/bin/httpd httpd 10167 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10168 26827 0 Aug31 ? 00:00:00 /usr/local/apache2/bin/httpd httpd 10169 26827 0 Aug31 ? 00:00:00 /usr/local/apache2/bin/httpd httpd 10170 26827 0 Aug31 ? 00:00:08 /usr/local/apache2/bin/httpd httpd 10171 26827 0 Aug31 ? 00:00:02 /usr/local/apache2/bin/httpd httpd 10172 26827 0 Aug31 ? 00:00:05 /usr/local/apache2/bin/httpd httpd 10173 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10174 26827 0 Aug31 ? 00:00:03 /usr/local/apache2/bin/httpd httpd 10175 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10176 26827 0 Aug31 ? 00:00:03 /usr/local/apache2/bin/httpd httpd 10177 26827 0 Aug31 ? 00:00:06 /usr/local/apache2/bin/httpd httpd 10178 26827 0 Aug31 ? 00:00:00 /usr/local/apache2/bin/httpd httpd 10179 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd httpd 10180 26827 0 Aug31 ? 00:00:01 /usr/local/apache2/bin/httpd root 26827 1 0 May04 ? 00:11:21 /usr/local/apache2/bin/httpd $ pidof http $ pidof httpd 26827 10180 10179 10178 10177 10176 10175 10174 10173 10172 10171 10170 10169 10168 10167 10166 10165 10164 10163 10162 10161
参考:
$ basename /usr/local/apache2/bin/httpd
httpd
ね? httpでは何も返さず、httpdを指定するとプロセスIDを返すという。
プロセス制御のスクリプトを書くときに重宝しそう。
ちなみにこの記事を書く際、確認に某レンタルVPSでwhich statusしたら、/sbin/status成るものが返ってきた。
$ whatis status status: nothing appropriate
コヤツは何者……?