• ベストアンサー

実行中のcpan processを終了させる方法をご存知ないでしょうか。

windowsのコマンドプロムプトからcpanシェルを起動しモジュールをインストールした際、cpanシェルをquit等で終了せずに、そのままコマンドプロムプトのウインドウを閉じました。再度cpanシェルを起動しようとしたところ、別のcpan processが実行中であると表示が出ます。その実行中のcpan processを終了させる方法をどなたかご存じありませんか。お手数ですが、ご回答の程よろしくお願いします。(コンピュータに詳しくありませんので、出来るだけ簡単に説明して頂ければ幸いです。) 再度cpanシェルを実行した際のプロムプト画面(一部"***"に書換えています): -------------------------------------------------------------- C:\***>perl -MCPAN -e shell Exiting subroutine via last at C:/Perl/lib/CPAN.pm line 1337. There seems to be running another CPAN process (pid ***). Contacting... Other job is running. Shall I try to run in degraded mode? (Y/n) [y] n You may want to kill the other job and delete the lockfile. On UNIX try: kill *** rm C:\Perl\cpan\.lock -------------------------------------------------------------- 以上です。

  • Perl
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

windows2000くらいから、tasklist.exe taskkill.exe という 外部コマンドが増えてますので、これを使うのも一つかと。 ただ、質問の文を読む限りでは、ロックファイルを削除するだけで 動いてくれそうな気がするんですがどうでしょう? tasklist /? TASKLIST [/S システム [/U ユーザー名 [/P [パスワード]]]] [/M [モジュール] | /SVC | /V] [/FI フィルタ] [/FO 形式] [/NH] 説明: このコマンド ライン ツールによってローカルまたはリモートのシステム で実行されているアプリケーションと関連付けられたタスクまたはプロセスの 一覧が表示されます。 パラメータ一覧: /S システム 接続するリモート システムを指定します。 /U [ドメイン\]ユーザー コマンドを実行するユーザー コンテキストを 指定します。 /P [パスワード] 提供されたユーザー コンテキストのパスワードを 指定します。省略された場合は、入力を要求します。 /M [モジュール] 指定されたパターン名に一致する DLL モジュールを 読み込んだすべてのタスクの一覧を表示します。モ ジュール名が指定されない場合、それぞれのタスクに よって読み込まれたすべてのモジュールを表示します。 /SVC それぞれのプロセスのサービスを表示します。 /V 詳細な情報を表示するように指定します。 /FI フィルタ フィルタによって指定された、与えられた条件に一致 するタスクを表示します。 /FO 形式 出力の形式を指定します。 有効な値: "TABLE", "LIST", "CSV"。 /NH 出力するときに、"カラム ヘッダー"を 表示しないように指定します。 "TABLE" と "CSV" のみ有効です。 /? ヘルプまたは使用法を表示します。 フィルタ: フィルタ名 有効な演算子 有効な値 ----------- --------------- -------------- STATUS eq, ne RUNNING | NOT RESPONDING IMAGENAME eq, ne イメージ名 PID eq, ne, gt, lt, ge, le PID 値 SESSION eq, ne, gt, lt, ge, le セッション番号 SESSIONNAME eq, ne セッション名 CPUTIME eq, ne, gt, lt, ge, le hh:mm:ss の形式の CPU 時間です。 hh は、時間、 mm は 分、ss は、秒です。 MEMUSAGE eq, ne, gt, lt, ge, le メモリ使用 (KB) USERNAME eq, ne [ドメイン\]ユーザーの形式の ユーザー名です。 SERVICES eq, ne サービス名 WINDOWTITLE eq, ne ウィンドウ タイトル MODULES eq, ne DLL 名 例: TASKLIST TASKLIST /M TASKLIST /V TASKLIST /SVC TASKLIST /M wbem* TASKLIST /S システム /FO LIST TASKLIST /S システム /U ドメイン\ユーザー名 /FO CSV /NH TASKLIST /S システム /U ユーザー名 /P パスワード /FO TABLE /NH TASKLIST /FI "USERNAME ne NT AUTHORITY\SYSTEM" /FI "STATUS eq running" >taskkill /? TASKKILL [/S システム [/U ユーザー名 [/P [パスワード]]]] { [/FI フィルタ] [/PID プロセスID | /IM イメージ名] } [/F] 説明: このコマンド ライン ツールは、複数のプロセスを終了するために使われます。 プロセス ID またはイメージ名を使って終了できます。 パラメータ一覧: /S システム 接続するリモート システムを指定します。 /U [ドメイン\]ユーザー コマンドが実行されるユーザー コンテキストを 指定します。 /P [パスワード] 提供されるユーザー コンテキストのパスワードを 指定します。省略された場合は、入力を要求します。 /F プロセスの強制終了を指定します。 /FI フィルタ フィルタによって指定された、与えられた条件に一致 するタスクを表示します。 /PID プロセスID 終了させるプロセスの PID を指定します。 /IM イメージ名 終了させるプロセスのイメージ名を指定します。 ワイルドカード '*' を使用してすべてのイメージ名を 指定できます。 /T ツリー削除: 指定したプロセスとそのプロセスが開始 したすべてのプロセスを削除します。 /? このヘルプまたは使用法を表示します。 フィルタ: フィルタ名 有効な演算子 有効な値 ----------- --------------- -------------- STATUS eq, ne RUNNING | NOT RESPONDING IMAGENAME eq, ne イメージ名 PID eq, ne, gt, lt, ge, le PID 値 SESSION eq, ne, gt, lt, ge, le セッション番号です。 CPUTIME eq, ne, gt, lt, ge, le 次の形式の CPU 時間 hh:mm:ss hh - 時間 mm - 分、ss - 秒 MEMUSAGE eq, ne, gt, lt, ge, le メモリ使用量 (KB) USERNAME eq, ne [ドメイン\]ユーザー の形式の ユーザー名です MODULES eq, ne DLL 名 SERVICES eq, ne サービス名 WINDOWTITLE eq, ne ウィンドウのタイトル 注意: /IM スイッチのワイルドカード '*' は、フィルタと使うときのみ有効に なります。 注意: リモート プロセスの終了は、/F オプションの指定したかどうか にかかわりなく強制的に実行されます。 例: TASKKILL /S system /F /IM notepad.exe /T TASKKILL /PID 1230 /PID 1241 /PID 1253 /T TASKKILL /F /IM notepad.exe /IM mspaint.exe TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"

findanswer
質問者

お礼

丁寧なご回答を頂き、誠にありがとうございます。 まず、tasklistコマンド等を実行しましたが、目的のプロセスIDは見つかりませんでした。 次に、C:\Perl\cpan\.lock を削除し、再度CPANシェルを起動したところ見事に問題は解決致しました。 ご回答を頂き、大変ありがとうございました。 ロックファイル削除後: --------------------------------------------------------------- C:\Documents and Settings\Owner>cpan Exiting subroutine via last at C:/Perl/lib/CPAN.pm line 1337. cpan shell -- CPAN exploration and modules installation (v1.9102) ReadLine support enabled cpan> quit Lockfile removed. --------------------------------------------------------------- 以上。

その他の回答 (1)

回答No.1

タスクマネージャを起動して、プロセスの一覧に それっぽいの(perl.exe とか)がありませんか? 指定して「プロセスの終了」してみては。

findanswer
質問者

お礼

早速ご回答を頂き、誠にありがとうございました。 目的のPIDを持ったプロセスは見つけることができませんでしたが、問題は無事解決致しました。 ご回答を頂き、誠にありがとうございました。

関連するQ&A

  • CPANでのDBIインストールが途中で止まる?

    Linux上でPerlからmysqlにつなげるため、DBI , DBD をCPANを使ってインストール しようとしておりますが、「 HTTP::Date not available」というメッセージがでた まま、止まってしまいます。CPANを初めて使うので、勝手が全くわからないので、 どうしたらよいのか、困ってます。どなたかご教授ください。 ----------------------以下、操作・表示ログ [root@tigers CPAN]# perl -MCPAN -e shell Terminal does not support AddHistory. There seems to be running another CPAN process (pid 993). Contacting... Other job not responding. Shall I overwrite the lockfile? (Y/N) [y] y cpan shell -- CPAN exploration and modules installation (v1.7601) ReadLine support available (try 'install Bundle::CPAN') cpan> install DBI CPAN: Storable loaded ok LWP not available CPAN: Net::FTP loaded ok Fetching with Net::FTP: ftp://ftp.dti.ad.jp/pub/lang/CPAN/authors/01mailrc.txt.gz Going to read /root/.cpan/sources/authors/01mailrc.txt.gz LWP not available Fetching with Net::FTP: ftp://ftp.dti.ad.jp/pub/lang/CPAN/modules/02packages.details.txt.gz Going to read /root/.cpan/sources/modules/02packages.details.txt.gz Database was generated on Thu, 15 Sep 2005 22:00:15 GMT HTTP::Date not available -------ここでダンマリ状態になります

    • ベストアンサー
    • Perl
  • CPANの環境、インストール設定

    1.CPANのモジュールの下準備として必要な環境は、LinuxやCygwin環境を導入していること。 2.以下のサイトの右側にあるDownload: CPAN-1.87.tar.gzをクリックしてダウンロードする。 http://search.cpan.org/~andk/CPAN-1.87/lib/CPAN.pm 3.C:\tempを作り、ここにLhaplusなどのソフトで解凍する。 4.コンソールからcd C:tempに移動して以下のコマンドを打つ。 # perl Makefile.PL # make && make test # make install 5.ホームに戻りコンソールから以下のコマンドを実行する。 perl -MCPAN -e shell ほとんどエンターでOK? 6.二回目にperl -MCPAN -e shellを押してcpanを起動する。 cpan>install Bundle::CPAN などでモジュールをインストールする。 以上のことをやってみたのですが、スクリプトが動きませんでした。 各項目で間違っていることろなどを教えてください。 どこかのサイトではコンパイルが必要と書いてあったのですが、何をコンパイルすればいいのかさっぱりわかりません。ここもアドバイスお願いします。

    • ベストアンサー
    • Perl
  • シェルで親プロセス終了時に子プロセスも終了させるには?

    シェルスクリプトを作っています. 親プロセス(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

  • プロセスの切り方

    質問です。 今会社(このカテゴリーをご覧になっていらっしゃる方でご存じの方が いると思いますが)でシェルを作成しているのですが、 時たまとんでもないミスをして、シェルが止まらなくなるときがあります。 その時即座に、ps-efでプロセス番号を割り出してkillしているのですが、 以前にミスったと思われるプロセスが残っていて困っています。 (実行時間が0:00となっているので、素人認識で大丈夫だと 思っているのですが、気になるのでkillで切ろうとすると所有者ではありません と言われてしまいます) どうすれば、こういったプロセスが切れるのかお教え下さい。

  • cpanからモジュールをインストール後

    お世話になります。 ネットで調べcpanからモジュールをインストールしました。 # su - # perl -MCPAN -e shell 最初の起動時に質問が出てきてリターンと少しの設定後、 cpan>install XML::RSS # find `perl -e 'print "@INC"'` -name 'RSS.pm' -print ./.cpan/build/XML-RSS-1.05/lib/RSS.pm ./.cpan/build/XML-RSS-1.05/blib/lib/XML/RSS.pm の形でインストールされているのを確認しました。 で、その後、perlのCGIの方で実行すると、 Can't locate XML/RSS.pm in @INC (@INC contains: ./mylib /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at rss.cgi line 10. BEGIN failed--compilation aborted at rss.cgi line 10. になってしまうんですが、次はどうすればよいのでしょうか

    • ベストアンサー
    • Perl
  • バックグランド実行+ログアウトでジョブが残るのは?

    以下のようなシェルをバックグランド実行した後、ログアウトしてもジョブ(プロセス)が残っているのはなぜなのでしょうか? バックグランド実行しても、ログアウトするとバックグランドプロセスはkillされてしまう。だからnohupを使いましょう、、とネットではよく書かれています。自分でこれを検証試みた結果、想定の 動きとならなかったので質問させてもらいました。 以下シェルを 「 ./test01.sh & 」と実行させるのですが、別コンソールでプロセスを監視している限り、最後まで動作し続けるのです。 どなたかおわかりになる方教えてください。 ◇検証用シェル #!/bin/sh echo "start" > ./test01.log for ((i=0 ; i<3 ; i++)); do sleep 60 echo $i >> ./test01.log date >> ./test01.log done

  • killでプロセスを終了したときの”終了しました”を表示させたくない

    お世話になります。 下記の内容のシェルスクリプトを実行すると数字の1~5が表示され最後に”終了しました”(LANG=Cだと”Terminated”)と表示されます。この”終了しました”を表示させたくないのですが何か良い方法はありますでしょうか? よろしくお願い致します。 ------- 以下シェルスクリプト -------- #!/bin/sh i=0 ( while : do sleep 1 done & ) | while : do echo $i if [ $i -eq 5 ];then kill -TERM 0 fi i=`expr $i + 1` done

  • CPANモジュール取得におけるmakeについて

    CPANモジュールのインストールについて質問があります。 環境は Windows XP, ActiveParl5.8.8 ,コンパイラはVC++6.0 です。 ※tar.exeとgzip.exeは C:\Perl\binにあります。 現在、Text::NSPというモジュールをインストールしようとしていますが cpan> install Text::NSP を実行すると makefile (1199):fatal error U1033:予期しない'@echo'Stop. nmake --NOT OK とエラーが出ました。 Microsoftサポートオンラインでエラーを調べたら、nmake仕様が原因らしいのですが、どこをどう変えたら解決できるのかが分かりません。 また、nmake ではなく dmake を使おうと思い、 C:\Perl\bin に dmake.exe を起きました。 また、C:\Perl\lib\CPAN のフォルダにあるConfig.pmのmakeを  'make'= q[] ⇒  'make' =q[C:\Perl\bin\dmake.EXE]と変更しました。 上記の変更で実行すると dmake.exe: Error-- 'C:\Perl\libConfig.pm' not found, and can't be made C:\Perl\bin\dmake.exe -- Not OK とエラーになります。 また perl -V:make でmakeを確認しても常に結果が make ='nmake'; としかなりません。 ここが make ='dmake'; と変えられればインストール出来るのかな?とも考えています。 この変更の仕方が調べているのですが、なかなか分かりません。 よろしくお願いします。 ※現在のnmakeの設定で他のモジュールは何の問題もなくインストール出来ています。

    • ベストアンサー
    • Perl
  • 適切なシェルスクリプトの実行方法について

    シェルスクリプト内でi18nの再読み込みをするために . /etc/sysconfig/i18n と記述するとシェルスクリプト終了後にi18nの内容が反映されていません。 シェルスクリプト自体は ./shell1.sh という形で実行しています。 質問1:このようになるのは「./shell1.sh」と実行したスクリプトは 新たに作成された子プロセスによって実行される為、スクリプトが終了し 親プロセスに戻っても親自身は再読み込みを行なっていないから、という認識で間違いないでしょうか。 質問2:この現象の回避策として「source shell1.sh」とsourceコマンドで シェルスクリプトを実行する方法を試してみました。 実際に上手くいったのですが、「set -e」を使っているとエラー時に ログアウトしてしまうなどの弊害もありました。 他に適切な回避策に問題はないでしょうか。 ご存知のかた、お手数ですがご解答のほど宜しくお願い致します。

  • シェルスクリプト

    こんばんわ。最近Tru64でシェルスクリプトを書いています。そこで質問ですが、 前の実行コマンドが正常に終了したら次のコマンドが実行されるスクリプトはどのように書けばよいのでしょうか? if文で可能なのでしょうか? またkillコマンドをawkで kill psID OK?(y/n) と表示させyを押せばkillするようにするにはどのようにすればよいですか? 例のように表示させることはawkでできるのですがどうしたらy入力後killできるのかわかりません。 これもif文を使わなければだめなのでしょうか? よろしくお願いします。

専門家に質問してみよう