• ベストアンサー

プロセスの切り方

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

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

  • ベストアンサー
noname#4147
noname#4147
回答No.3

ps -ef の左端にでているUSERかrootになってkillしてください。 それ以外のユーザはkillできません。 (残念ながら、kill -9 でも無理だと思います。) 実行時間が00:00なら特に問題ないと思いますが、お困りなら、root権限を持っている人に相談してはいかがでしょうか。 (あなたがrootなら簡単ですが...)

ami_mizuno
質問者

お礼

やはり、実行時間が00:00なら特に問題ないんですね。 安心しました。 だけど気になるんで、rootで切りたいと思います。 (rootのパスワードなら解るので) 有り難うございました。

その他の回答 (2)

  • mph
  • ベストアンサー率54% (39/72)
回答No.2

suしてrootになってkillする。 しつこく生き残るやつはrootでkill -9する。 ゾンビになってどうしょうもないやつはrebootしかないすね。

ami_mizuno
質問者

お礼

有り難うございました。 kill -9で切れば良いんですね。 早速やってみたいと思います。

  • hananeko
  • ベストアンサー率29% (5/17)
回答No.1

kill -9 終了させるプロセス番号 でできる、と思います。

関連するQ&A

  • Unixの親プロセスと子プロセスの関係について

    はじめまして。 親プロセスが終了するとそのプロセスから呼ばれた 子プロセスも停止するという認識は正しいでしょうか? というのも、あるシェルスクリプトを"kill -9"コマンドで強制終了させたのですが、そのシェルスクリプト内のコマンド(sleepコマンドです)は終了せずに残っていたので(psで確認しました)、??という感じでした。 さらにそのsleepコマンドの親プロセスが1(init?)になっていました。 色々とWEB上で調べてみたのですが、この動作について の記述を見つけることができませんでした。 どなたかご存知でしたら是非ご教授下さい。よろしくお願いします。

  • シェルのプロセスを止めて再度同じシェルを動かすことは可能でしょうか?

    cronでシェルを定期的に動かし、前日に既に動いている自分のプロセスを止めて新たに動かすということをシェルの中でやりたいのですが、プロセスをPSで検索すると以前のプロセスと新たに動いたプロセスの両方をkillしてしまい実現できません。 何かよい方法があれば教えてください。 よろしくお願いします。

  • プロセスをkill出来ない

    いつもお世話になっております。 Linux上でプロセスをkillしたいのですが、 kill -9 プロセス番号 を実行しても、プロセスが削除できません。 この場合、どのようにしたら削除出来るのでしょうか? よろしくお願い致します。

  • logoutしたとき消えるプロセスは誰が消してるの?

    telnetなどでログインして プロセスを動作させて、ログアウトすると 動作させていたプロセスが消えるのですが、 誰がそのプロセスにシグナルを送っているのでしょうか? OSはsolarisを使っています。 シェルが子供を消しているのかと思ったのですが、 以下の動作をみるとそうでないみたいで・・ telnet .... $ $sh $sleep 10000 & 1234(←sleepのPID) $kill [shのPID] $ ps -eo pid,ppid,args | grep 1234 1234 1 sleep 1000 $exit telnet .... $ $ ps -eo pid,ppid,args | grep 1234 $ない

  • シェルについて

    以下のような「プロセスをkillするシェル」を作成しています。 そこで質問なのですが、プロセスが死んだら繰り返しを抜ける ようにしたいと考えているのですが、どのようにすれば実現できるのか 分かりません。 どなたかご存知の方がいらっしゃれば教えていただきたいです。 申し訳ありませんが、宜しくお願いいたします。 #!/bin/csh # 変数定義 set cnt = 3 #リトライカウンタ set i = 1 # ループカウンタ #aaaをkill while ( $i <= $cnt ) ps -ef | grep -v grep | grep aaa | \ nawk '{if(match($NF,"aaa") == 1){system("kill " $2);print "kill: " $2}}' ps -ef | grep -v grep | grep aaa| \ nawk '{if(match($NF,"aaa") == 1){system("kill -9 " $2);print "kill: " $2}}' @ i = $i + 1 end

  • bash:あるプロセスをkillするスクリプト

    こんにちは。 RedHat9を使っています。 bashシェルで、コマンドの実行結果を変数にわたすには、どうしたらいいですか? mpg123でmp3を聞いています。 ターミナルからCtrl+Cを2回入力するのではなしに、スクリプトを走らせるだけで実行をとめたいです。 ps -A | grep 'mpg123' の実行結果を変数に入れて、killコマンドの引数にその変数をわたせばいいんじゃないかと思ったんですが。 すみません、よろしくおねがいします。

  • プロセスIDからプロセスの有無を確認する方法

    PHPのCLIからの実行で排他制御を行おうと思い、ある程度出来てきたのですが、保存しておいたプロセスIDからプロセスの有無を確認する方法が分かりませんでした。 簡単な方法としてはsystemやexecを使用して ps -ef|grep xxxx などとすれば良いかと思うのですが、grepそのものが引っ掛かってしまったりしてあまり美しくありません。リファレンスを一通り読んで関数を探してみたのですが適切な関数が見当たりませんでした。 何か良い方法をご存知の方がいらっしゃいましたらご教示頂けますでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ■質問内容

    ■質問内容  シェルの中で実行したコマンドの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することは可能でしょうか?

  • 実行中のプロセス数をカウントしたい

    ネットで以下コマンドを見つけて実行しました。 ps -ef | grep -v grep | grep httpd 実行結果は/usr/sbin/htpdが9行表示 この9行をカウントしたい為、 ネットで以下コマンドを見つけて実行しました。 ps -ef | grep -v grep | grep httpd | wc 実行結果は『9 72 576』が表示 上記の結果で9のみを表示させるコマンドがあれば 教えていただけないでしょうか。 また、実際にカウントしたいプロセスは以下例のように 半角スペースと()をふくんでおり 上記httpdのようにうまくいきませんでした。 例:test (rei) 半角スペースと()を含んだプロセス数をカウントするコマンドがあれば 教えていただけないでしょうか。

  • Powershell プロセス二重起動

    PowerShell初心者です。 自身で起動中のスクリプトと同じコマンドで実行しているプロセスを検知し、他方のプロセスをkillしようと考えております。要は二重起動のチェックをしたいです。 現在コマンドラインで確認しているのですがどうもうまくいきません。 やろうとしている操作は以下です。 (1)ファイルにプロセス情報を出力。 PS C:\> $tempfile = "C:\pswork\servicemon\temp.log" PS C:\> Get-WmiObject win32_process ` | select Name, ProcessId, CommandLine ` | sort Name ` | Format-Table -AutoSize ` | Out-File -FilePath $tempfile -width 1000 (2)自分のPID以外のプロセス情報を取得 PS C:\> $mypid = $PID PS C:\> $killpidtmp = Get-Content $tempfile | Select-String -Pattern ".*powershell.exe.*svmon131_loop.*" |Select-String -NotMatch -Pattern "\s$mypid\s" PS C:\> echo $killpidtmp powershell.exe 2024 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command C:\pswork\servicemon\svmon131_loop.ps1 (3)splitでプロセス番号のみを取得。 PS C:\> $killpid = echo $killpidtmp |% {$($_-split(" "))[1]} PS C:\> echo $killpid ★ここがうまく取得できません。空白しか取得できていません。 (4)最終的には取得したPIDでプロセスを終了。 PS C:\pswork\servicemon> Stop-Process -ID $killpid Bシェルで同様のスクリプトがあったので、それを参考にPowerShellで書こうとしているので、 そもそも無理があるのかもしれないかと考えています。 上記の方法でなくてもよいので、二重起動のチェックと該当プロセスの停止で参考となる情報があれば教えて頂きたいです。