初めて自分の家と他人の家が違う、と意識した時

soralis初心者です。

サーバの資料採取のため、以下の概要のcshを組み、クーロン登録しております。

(1)snoop起動(snoop1.csh ,snoop2.csh)
snoop -o XXX01.snoop -d XXX01
snoop -o XXX02.snoop -d XXX02
(2)シェルの停止(snoopkill.csh)
pgrep -f 'snoop' | xargs kill


(1)の起動自体はうまく行えているのですが、
(2)の処理をcshから起動すると、プロセスが死にません。

※詳細
(2)をクーロンから実行後、cshのプロセスは死んでいるが、
snoopコマンド自体のプロセスが生きたままになり、
snoopログが無限に作り続けられている状態です。

コマンド(pgrep -f 'snoop' | xargs kill)を直接コマンドラインから
入力すると、snoopのプロセスは全て死にました。

cshと通常のコマンド入力ではkillの作用が異なるのでしょうか?

御回答をよろしくお願いします。

---------------------------------------------------------
(1)起動後のプロセス状態
pgrep -lf 'snoop'

88889 sh -c /XXX/snoop1.csh
88888 sh -c /XXX/snoop2.csh
77777 snoop -o XXX01.snoop -d XXX01
77776 snoop -o XXX02.snoop -d XXX02
---------------------------------------------------------

---------------------------------------------------------
(2)起動後(クーロン)のプロセス状態
pgrep -lf 'snoop'

77777 snoop -o XXX01.snoop -d XXX01
77776 snoop -o XXX02.snoop -d XXX02
---------------------------------------------------------


---------------------------------------------------------
(2)のコマンドをコマンドラインから実行後のプロセス状態
pgrep -lf 'snoop'



---------------------------------------------------------

A 回答 (1件)

シェルのファイル名に、pgrepしている"snoop"がついてますが、


これを変更したらうまくいかないですか?

あと、pgrep|xargしてる部分をpkillにしてみるとか。

一応こっちで試した限りは問題なくkillされてます。

■実行例

root@opensolaris:~# uname -a
SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris

・シェルの中身
root@opensolaris:~# cat start.csh
#!/bin/csh
snoop -o snoop.out icmp

root@opensolaris:~# cat kill.csh
#!/bin/csh
echo "*********** kill **************"
echo "before "
date;pgrep -fl 'snoop'
pgrep -f 'snoop' | xargs kill
echo "after "
date;pgrep -fl 'snoop'


・飛んできたメールの内容

Your "cron" job on opensolaris
csh /root/kill.csh

produced the following output:

*********** kill **************
before
Mon Dec 20 20:13:00 JST 2010
1550 snoop -o snoop.out icmp
after
Mon Dec 20 20:13:00 JST 2010
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

こちらで確認したところ、
やはりKillするシェルのファイル名がネックとなっていました。

Killコマンドを発行した直後、起動元のシェルまで死んだため、
うまく走らなかったようです。(--;)

Killするシェルを以下の通り変更し、うまくいくことを確認しました。

(2)シェルの停止(snoopkill.csh ⇒ snpkill.csh(ファイル名を変更))
pgrep -f 'snoop' | xargs kill



単純な問題で助かりました。

本当にありがとうございます。

お礼日時:2010/12/21 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!