シェルスクリプトにて、とあるデーモンのプロセスID *のみ* を取
得するには、どのようにすれば良いでしょう?
現在は FreeBSD上で
pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`
などとやってますが、もっといい方法は無いでしょうか?
対象となる環境は、FreeBSD と NetBSD を考えております。
===
Hideki Fujimoto
一般的ではありませんんが、
/var/run/hoged.pid
があるかチェックしてみるといいと思います。
あればラッキー。
> pid=`ps axc | grep -w hoged | sed -e 's/ +//' | cut -f 1 -d ' '`
pid=`ps axc | awk '/hoged/ { print $1}'`
木村 栄伸
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.
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 がどこかにあると
思います.
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
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
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 以前でも使おうとしてしまう
# 間抜けなわたし。(指が勝手に動くんだもの)
--
浅田和久/大阪市在住
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 を展開すれば詳しい
ことが判ると思いますが,それは未だ行っていません(済み
ません).
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
> # pppd(8) にちゃんと書いてました。(-.-;
> # NetBSD はまだインストールしていないので未確認
基本的に同じです。NetBSD 1.5だと ppp 2.4.0 がベースとなっています。
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