cshからsnoopコマンドをkillできない理由を解説
- cshからsnoopコマンドをkillする方法がうまくいかない問題について解説します。
- cshと通常のコマンド入力ではkillの作用が異なるため、snoopコマンドが終了しない現象が発生します。
- 具体的な対処法として、コマンドラインから直接killコマンドを実行する方法を紹介します。
- ベストアンサー
snoopコマンドをcshからkill出来ない
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' ---------------------------------------------------------
- kamo19871011
- お礼率100% (1/1)
- Solaris系OS
- 回答数1
- ありがとう数14
- みんなの回答 (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
関連するQ&A
- XPで、プロセスをKILLするDOSからのコマンドは。
WindowsXPです。 Ctr+Alt+Del で、タスクマネージャを起動してプロセスのところを見ると、いらないプロセスがあるので、これを終了させる際、今は、このタスクマネージャでプロセスを選択して、プロセス終了をしています。 これをMSDOSのプロンプトから、コマンドで実行できませんか。 たとえば、 Kill "イメージ名" などのように。 (これは適当に書いたので、このコマンドは間違っていますが) KILLしたいプロセスが複数あるので、バッチファイルにしてまとめてKILLしたいのです。 よろしくお願いします。
- ベストアンサー
- Windows XP
- UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止し
UNIX(Linuxでも)のkillコマンドで、終了メッセージを抑止したい。 例えば、シェルの中で以下のようなコマンドがある場合に、 「○○が終了しました」とメッセージが出力されてしまいます。 抑止方法があれば教えてください。 kill xxx > /dev/null 2>&1 ※xxxはプロセスID よろしくお願いします。
- ベストアンサー
- Linux系OS
- ■質問内容
■質問内容 シェルの中で実行したコマンドのPIDを取得して、 KILLすることは可能でしょうか? ■背景 サーバの運用管理をしています。 Solaris9のサーバで以下のように snoopを採取するシェルを作成しました。 1.snoop採取 2.10分後、1で実行しているsnoopと名のつくプロセスをKILL 3.1と2を6回繰り返して1時間試料採取を実施 問題なのは、2.のsnoopと名のつくプロセスをKILLするというところで、 もし他の人がsnoopと名のつくプロセスを実行していた場合に、 KILLしてしまうことです。 そこで、1.で実行したsnoopのPIDを取得して、そのPIDのsnoopだけを KILLすることは可能でしょうか?
- ベストアンサー
- その他([技術者向] コンピューター)
- クーロンでシェル実行、JAVAコマンドが動かない・・
クーロンにて、シェルを自動起動し、JAVAコマンドを動かそうとしています。 cron → abc.sh実行 └def.sh実行 └JAVAコマンド実行 という位置付けです。 まず、 0 3 * * * sh /usr/src/sh/abc.sh という設定にてクーロンを自動実行しようとしました。abc.shの内容はこうです。 #!bin/sh /bin/sh /usr/src/sh/def.sh> /log/def.txt def.txtというテキストは生成されるのですが、def.shが実行されていません。。 def.shの中身はjavaコマンドで、 java aaa.bbb.ccc.ddd/conf/repair.properties というものです。 また、念のため、クーロンに直接 0 3 * * * /bin/sh /usr/src/sh/def.sh ともやってみましたが、結果は同じでした。 どうすればdef.shがちゃんと実行されるでしょうか? そもそもjavaコマンドをクーロンですることはできないのでしょうか?
- 締切済み
- その他(OS)
- unixのfindコマンド
unixのfindコマンドで、ある複数のディレクトリから指定のファイル名だけを 検索し、その結果をgrepしたいのですが、 例えば 01_dir 02_dir : 11_di : 21_dir : と言うディレクトリがあります。 そこから、「0」で始まっているディレクトリの中なら拡張子が*.txtを 検索し、その検索したファイルに対して、grepを実行したいのですが、 上手くいきません。 もちろん、各ディレクトリには、「.txt」以外のファイルもありますし、 ファイル名にも条件を付与したいです。 以下の様に、 find . -name "0*_dir" -type d -print | xargs ls -l *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs ls *.txt | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls -l '{} /*.txt' | grep "検索文字" find . -name "0*_dir" -type d -print | xargs -i ls {} "検索文字" とやってみたのですがだめでした。 find ./ -type d \( -name '1_*dir' -o -name '2*_dir' -o -name '3*_dir' \) -prune -o -type f -print と「-prune」で除外するディレクトリを指定すればできなくはないですが、 すべてのディレクトリ書くのはいい方法ではないです。 よい方法をお願いします。 OSは、Solaris 11.3です。
- ベストアンサー
- Solaris系OS
- [Unix初心者]「ps|grep netscape|cut -f1|kill」がうまくいかない原因は?
当方、大学の授業でSolarisを使うことになり その課題の1つとして以下のものが出されています 現在起動しているnetscapeを終了するにはどうしたらよいか、 手順を述べよ この問題自体は簡単で、 psコマンドでnetscapeのプロセスIDを調べ、 その調べた番号をkillすれば良い・・・ つまり psで 1000 (何だかわかってないけど何かしら) netscape とあったら kill 1000とすればいいのはわかっているのですが (おそらくこれが解答と思われます) 簡単な応用として 「起動しているnetscapeは1つとは限らず、 かつハイブを利用すべきだ」 を行ってみようと思い psでリストを表示したら先ほどの(分からない部分)が出てきています TAがこそこそ言っていたcutコマンドの存在を知り netscapeの「プロセスIDだけのリスト」にするために ps|grep netscape|cut -f1 と打ってみたのですが どうもプロセスIDのみになっていない様子。 解決へのヒントをください。 (たしかtcshシェルとかいっていた気が)
- ベストアンサー
- Solaris系OS
- SIGTERMについて
マルチプロセス処理で、 signal(SIGTERM,xxx) の処理を入れています。 プログラムを実行した後、コマンドラインから kill -TERM 親PID とたたき子プロセスまで殺すことはできるのですが、 これをコマンドラインではなく、 何かスクリプトを作成し、運用したいと思っています。 どなたかスクリプトの書き方をご教授頂けませんでしょうか。
- 締切済み
- C・C++・C#
- DNS(BIND)を起動できない
(1)DNSサーバの再起動を行ったところ、 次のような状態になりました。 このコマンドは数回打っても、「停止中」に「OK」は表示されません。 [root@jisaku ~]# /etc/rc.d/init.d/named restart named を停止中: named を起動中: [ OK ] (2)PSコマンドで状態を確認したところ、次のように 「一時停止」となっているようです。 [root@jisaku namedb]# ps aux |grep named root 3370 0.0 0.1 5652 764 pts/1 S+ 13:12 0:00 grep named (3)再開を試みましたが、拒否されています。 [root@jisaku namedb]# kill -CONT 3370 -bash: kill: (3370) - そのようなプロセスはありません (2)のコマンドは打つ度にPIDが変更されるようです。 どのようにすれば解決できますか?
- ベストアンサー
- Linux系OS
- シェルで親プロセス終了時に子プロセスも終了させるには?
シェルスクリプトを作っています. 親プロセス(AAA.sh)から子プロセス(BBB.sh)を呼び出した状態で,AAA.shをkillすると,BBB.shのプロセスが終了しないまま,残ってしまうため, http://oshiete1.goo.ne.jp/qa1968135.html を参考にkill -- -$$で同じプロセスグループのものが終了するように作ったのですが,BBB.shが呼び出される前にAAA.shをkillすると,プログラムが暴走してしまいます. どうすれば暴走せずに,親子ともども終了させることができるでしょうか??? *** AAA.sh *** #!/bin/sh func exit_AAA(){ kill -- -$$ exit 1 } trap "exit_AAA" HUP INT QUIT TERM echo "call BBB??(y/n)" read num ./BBB.sh *** BBB.sh *** #!/bin/sh echo "exit BBB?(y/n)>" read num
- 締切済み
- その他(プログラミング・開発)
お礼
御回答ありがとうございます。 こちらで確認したところ、 やはりKillするシェルのファイル名がネックとなっていました。 Killコマンドを発行した直後、起動元のシェルまで死んだため、 うまく走らなかったようです。(--;) Killするシェルを以下の通り変更し、うまくいくことを確認しました。 (2)シェルの停止(snoopkill.csh ⇒ snpkill.csh(ファイル名を変更)) pgrep -f 'snoop' | xargs kill 単純な問題で助かりました。 本当にありがとうございます。