Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Q]プロセス ID のみを取得するには

165 views
Skip to first unread message

Hideki Fujimoto

unread,
Jan 4, 2001, 10:18:38 PM1/4/01
to
フジモト と申します。

シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
得するには、どのようにすれば良いでしょう?

現在は FreeBSD上で

pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`

などとやってますが、もっといい方法は無いでしょうか?

対象となる環境は、FreeBSD と NetBSD を考えております。

===
Hideki Fujimoto

KIMURA Shigenobu

unread,
Jan 4, 2001, 11:15:53 PM1/4/01
to
fuji...@softfront.co.jp (Hideki Fujimoto) writes:
> シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
> 得するには、どのようにすれば良いでしょう?
>

一般的ではありませんんが、

/var/run/hoged.pid

があるかチェックしてみるといいと思います。
あればラッキー。

> pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`

pid=`ps axc | awk '/hoged/ { print $1}'`

木村 栄伸

Takahiro Kambe

unread,
Jan 4, 2001, 11:14:36 PM1/4/01
to
独断でfj.unixは抜きます。

In article <933eee$go7$1...@news.softfront.co.jp>


fuji...@softfront.co.jp (Hideki Fujimoto) writes:
> 現在は FreeBSD上で
>
> pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`
>
> などとやってますが、もっといい方法は無いでしょうか?

対象となるdaemonのプロセスは任意なんですか?

> 対象となる環境は、FreeBSD と NetBSD を考えております。

この2つに限定した、お行儀の良いdaemonなら /var/run/$daemon.pid にプ
ロセスIDを含んだファイルを残すのが一般的です。

--
神戸 隆博, 株式会社ジェプロ(京都) / Takahiro Kambe, JEPRO Co., Ltd.

Yasuyuki Saito

unread,
Jan 5, 2001, 6:24:22 AM1/5/01
to
こんばんは.齋藤です.

In article Message-ID:<933eee$go7$1...@news.softfront.co.jp> at fj.os.bsd.freebsd,fj.os.bsd.netbsd,fj.unix,fj.unix.shells
Hideki Fujimoto wrote:

= フジモト と申します。
=
= シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
= 得するには、どのようにすれば良いでしょう?
=
= 現在は FreeBSD上で
=
= pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`
=
= などとやってますが、もっといい方法は無いでしょうか?
=
= 対象となる環境は、FreeBSD と NetBSD を考えております。

pidof を使うのが簡単だと思います.これらのOS に
あるかどうか不明ですが….
当方はVine Linux 2.0/2.1 を使用しています.

調べていなくて恐縮ですが,source がどこかにあると
思います.

--
齋藤康之
sig...@jaist.ac.jp
http://www.jaist.ac.jp/~sight95

Hidetoshi Narumi

unread,
Jan 5, 2001, 10:10:17 AM1/5/01
to

psコマンドの`O'オプションを使ってプロセスIDと
コマンドのみを表示されば、その後の処理が少し
簡単になります。例えば
$ ps axo pid,command
$ ps axo pid,comm
とか、
$ ps -e -o pid,command
$ ps -e -o pid,comm
です。

以下のような手続き(getpid)はいかがでしょう。
echoコマンドを適当なコマンドに置き換えれば
プロセスID取得後の処理もいっしょにできます。

必要に応じてgetpidの引数はチェックしたほうが
よいでしょう。

#!/usr/bin/sh
getpid()
{
ps axo pid,command | while read pid comm args
do
[ "X$comm" = "X$1" ] && echo $pid
done
}
:
:

--
NARUMI,Hidetoshi

Ryuichi Takashima

unread,
Jan 6, 2001, 6:55:18 AM1/6/01
to
たかしまです。

In article <934at6$oc0$3...@jaist-news.jaist.ac.jp>
sig...@jaist.ac.jp wrote:

>= シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
>= 得するには、どのようにすれば良いでしょう?
>=

~~~~

> pidof を使うのが簡単だと思います.これらのOS に
>あるかどうか不明ですが….
> 当方はVine Linux 2.0/2.1 を使用しています.
>
> 調べていなくて恐縮ですが,source がどこかにあると
>思います.

Linux のものは psmisc 由来のものの様です。

ftp://lrcftp.epfl.ch/pub/linux/local/psmisc
--
taka...@HaNya-N.org

ASADA Kazuhisa

unread,
Jan 6, 2001, 7:17:12 AM1/6/01
to
fj.unix と fj.unix.shells に絞ります。

Yasuyuki Saito <sig...@jaist.ac.jp> さんは、
<934at6$oc0$3...@jaist-news.jaist.ac.jp> に書きました:

> pidof を使うのが簡単だと思います.これらのOS に
> あるかどうか不明ですが….
> 当方はVine Linux 2.0/2.1 を使用しています.

Solaris 7 以降をお使いの方には pgrep/pkill というものがあります。

当然ながら、ps と grep を組み合わせるよりも軽いので、Solaris 7 以降
では rc?.d の停止スクリプトにて利用されています。

# すっかり馴染んでしまって、Solaris 2.6 以前でも使おうとしてしまう
# 間抜けなわたし。(指が勝手に動くんだもの)
--
浅田和久/大阪市在住

Yasuyuki Saito

unread,
Jan 8, 2001, 3:27:15 AM1/8/01
to
こんにちは.齋藤です.

In article Message-ID:<93715e$45b$1...@news3.dti.ne.jp> at fj.os.bsd.freebsd,fj.os.bsd.netbsd,fj.unix,fj.unix.shells
Ryuichi Takashima wrote:

= たかしまです。
=
= In article <934at6$oc0$3...@jaist-news.jaist.ac.jp>
= sig...@jaist.ac.jp wrote:
=
= >= シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
= >= 得するには、どのようにすれば良いでしょう?
= >=
= ~~~~
= > pidof を使うのが簡単だと思います.これらのOS に
= >あるかどうか不明ですが….
= > 当方はVine Linux 2.0/2.1 を使用しています.
= >
= > 調べていなくて恐縮ですが,source がどこかにあると
= >思います.
=
= Linux のものは psmisc 由来のものの様です。
=
= ftp://lrcftp.epfl.ch/pub/linux/local/psmisc

そうでしたか.後でチェックしてみます.

いくつか補足致します.そもそも,
/sbin/pidof は/sbin/killall5 へのシンボリックリンクと
なっていることが判りました.
rpm -q -f /sbin/pidof した結果,SysVinit-2.78-5 に
含まれていることが判りました.SRPM を展開すれば詳しい
ことが判ると思いますが,それは未だ行っていません(済み
ません).

Hideki Fujimoto

unread,
Jan 8, 2001, 8:33:25 PM1/8/01
to
元記事投稿者のフジモト です。

Message-ID: <933eee$go7$1...@news.softfront.co.jp> の僕の質問に
対し、以下の様なフォローがありました。

o *BSD では /var/run/hoged.pid があれば、それを使用すれば良い。

o ps axc | awk '/hoged/ { print $1}'

o Linux では pidof を使用すれば良い。
また source は ftp://lrcftp.epfl.ch/pub/linux/local/psmisc
にある。

o Solaris 7 以降ならば、pgrep/pkill を使用すれば良い。

o psコマンドの `O' オプションを利用したスクリプトを用意する。
例) #!/usr/bin/sh


getpid()
{
ps axo pid,command | while read pid comm args
do
[ "X$comm" = "X$1" ] && echo $pid
done
}

対象としていたデーモンは pppd でして、これは FreeBSD 上では、
/var/run/pppdn.pid を作成するので、これを見ることにしました。
# n は、0以上の整数。
# pppd(8) にちゃんと書いてました。(-.-;
# NetBSD はまだインストールしていないので未確認

皆さんフォローありがとうございました。m(_ _)m

===
Hideki Fujimoto

Takahiro Kambe

unread,
Jan 8, 2001, 10:34:31 PM1/8/01
to
In article <93dpp5$gn$1...@news.softfront.co.jp>

fuji...@softfront.co.jp (Hideki Fujimoto) writes:
> 対象としていたデーモンは pppd でして、これは FreeBSD 上では、
これを先に書いて貰った方が良かったかもしれません。

> # pppd(8) にちゃんと書いてました。(-.-;
> # NetBSD はまだインストールしていないので未確認

基本的に同じです。NetBSD 1.5だと ppp 2.4.0 がベースとなっています。

Hideki Fujimoto

unread,
Jan 9, 2001, 6:43:14 PM1/9/01
to
フジモト です。

In article <93e0s7$e53$1...@lyra.kyoto.jepro.co.jp>
ta...@kyoto.jepro.co.jp writes:

>In article <93dpp5$gn$1...@news.softfront.co.jp>
> fuji...@softfront.co.jp (Hideki Fujimoto) writes:
>> 対象としていたデーモンは pppd でして、これは FreeBSD 上では、
>これを先に書いて貰った方が良かったかもしれません。

そうですね。

ま、/var/run/ に .pid を作ってくれないものも中にはあるそうで
その場合どうするか もわかって良かったです。

# skkserv とかそうみたいです。


>> # pppd(8) にちゃんと書いてました。(-.-;
>> # NetBSD はまだインストールしていないので未確認
>基本的に同じです。NetBSD 1.5だと ppp 2.4.0 がベースとなっています。

了解です。
どうも有難うございます。

# 今度の週末あたり、NetBSD 1.5 をインストール予定

===
Hideki Fujimoto

0 new messages