Ubuntuでプロセスを強制終了するにはどうすればよいですか?


149

自分の非ルートアカウントで実行されているすべてのプロセスを強制終了するにはどうすればよいですか?

Windowsマシンで発生したsmbdプロセスの回転があるため、Linuxサーバーにtelnetで接続し、それらの回転プロセスを強制終了します。サービスを再起動したり、マシンを再起動したりする権限がありません。

回答:


172

強制終了する権限があるすべてのプロセスを強制終了するには、単にコマンドを実行します

kill -15 -1またはkill -9 -1、目的の動作に応じて(man kill詳細に使用)

firefoxなどの特定のプロセスを強制終了するには、単に実行します

pkill firefoxまたはkillall firefoxあなたが望む行動に応じて:「killall」と「pkill」の違いは何ですか?

実行中のプロセスを確認するには、次のコマンドを使用します

ps -ef

ユーザーbobですべてのプロセスを検索する場合、これが役立つ場合があります

pgrep -l -u bob

または

ps -ef | grep bob

4
で始まり、頑固なプロセスがあり、自分が何をしているかを知っている場合にkill -15 -1のみkill -9 -1進みます。データベーストランザクションの途中にある可能性のあるプロセスをランダムに強制終了することは、あなたが提案するほど気軽にやるべきことではありません。
サイモンリヒター

また、Firefoxのプロセスはという名前firefox-binです。
サイモンリヒター

いいえ、実行killall firefoxしてみて、killall firefox-bin何が機能するかを確認できます。最初のコメントに同意します。
ste_kwr

@ste_kwrに感謝します。2日間苦労した後、あなたの指示で作業しました
...-Java.beginner

PIDを必要としない利点は、cronジョブにあります。名前を使用すると、きれいに機能します。
–SDsolar

56

sudo kill <pid>またはを使用sudo killall <process-name>


3
私はこれがこの質問に関連しているとは思わない、あなたはsudoを使用している-OPは質問で述べたようにそのような特権を持っていません。
pl1nk

OPには権限がありません。回答を編集してください。削除するか、「回答ではない」としてコメントに変換することができます。
ISH

彼に権限がない場合は、kill <pid>またはkillall <process-name>を実行するだけでよいのですが、root以外のアカウントで使用しただけです。 。
シャイリンオルティス

20

さらに試してみましょう:

sudo apt-get install htop 

このtopコマンドは、システムのリソース使用量を表示し、ほとんどのシステムリソースを使用しているプロセスを表示する従来の方法です。Topにはプロセスのリストが表示され、一番多くのCPUを使用しているプロセスが上部に表示されます。

htopわかりやすいレイアウトで同じ情報を表示します。また、矢印キーを使用してプロセスを選択し、キーを使用してプロセスを強制終了または優先順位を変更するなどのアクションを実行することもできますF


16

使用できます

ps -ax | grep application name 

ターミナルでfirefoxタイプを検索するとps -ax | grep firefox、対応するアプリケーションのプロセスIDが表示されます。killプロセスid = 1317の場合、コマンドでそのアプリケーションを停止できます。

kill -9 1317

13

を使用しますxkillxkillターミナルに入力してウィンドウをクリックするかxkill、プロセスIDを入力すると終了します。

x.orgで詳細を確認xkillしてください


1
pkill ndが気に入った後、2番目に使用します。+1
セルギーコロディアズニー

この場合、xkillは機能しません...
PythoNic

@PythoNicそれはどんな場合ですか?
アルヴァ

1
彼は、私にとってはXサーバーにも関連していない非ウィンドウプロセスを
強制終了

9

ユーザーが所有するすべてのプロセスを強制終了するにはusername、次を実行します。

pkill -U username

7

問題を2つの部分に分けます。

1)自分が開始したプロセスを見つけるにはどうすればよいですか?これを実行します:

ps -u `whoami`

これwhoamiは、使用しているアカウントの名前がわからない場合に使用します。そうでない場合は、引用符なしでアカウントの名前を入力します。

これにより、アカウントで削除できるすべてのプロセスがリストされます。

2)psコマンドは、プロセス番号、TTY、時間、およびCMDをリストします。プロセスIDは最初の列です。その番号を使用してプロセスを強制終了します。プロセスを強制終了するときは注意してください。間違ったプロセスを強制終了すると、何かが壊れる可能性があります。プロセスをkill強制終了するには、プロセスにSIGNALを送信するコマンドを使用します。シグナルは、プロセス何をすべきかを示します。たとえば-1、プロセスにを送信すると、構成ファイルをリロードするように要求されます。aを送信すること-2は、そのプロセスでControl + Cを押すことと同等です。-9カーネルはプロセスに通信せずにプロセスを放棄します。

ps -u whoamiが次のようなものを返したとします

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

そしてfirefox、プロセスIDでプロセスを強制終了したい場合は、次のようにします。

kill -1 7667

次に、同じpsコマンドを再実行して、プロセスがまだ実行されているかどうかを確認します。まだ実行中の場合は、

kill -2 7667

まであなたの方法で働いています-9

アカウントによって開始されたすべてのプロセスを強制終了するには、と入力しkill <level> -1ます。前と同じ:まで進みます-9

プロセスの名前がわかっている場合は、単にに進むことができkillall <processname>ます。例:(killall fishこの意味で、魚はフレンドリーインタラクティブシェルです)。

のドキュメントkillallは次の場所にあります:http : //manpages.ubuntu.com/manpages/hardy/man1/killall.1.html


3

このアプリケーションを使用すると、プログラムのリストを表示できます

htopをインストールする

sudo apt-get install htop

プロセスを参照してプロセスを強制終了するには、インストールして削除するだけです

ここに画像の説明を入力してください


2

... Linuxのすべてのプロセスはシグナルに応答します。シグナルは、プログラムに動作を終了または変更するように指示するosレベルの方法です。

PIDによるプロセス信号の送信方法

プログラムにシグナルを渡す最も一般的な方法は、killコマンドを使用することです。

ご想像のとおり、このユーティリティのデフォルトの機能はプロセスの強制終了を試みることです。

kill PID_of_target_process

これにより、プロセスにTERMシグナルが送信されます。TERMシグナルは、プロセスに終了するよう指示します。これにより、プログラムはクリーンアップ操作を実行し、スムーズに終了できます。

プログラムが正常に動作せず、TERMシグナルが与えられたときに終了しない場合、KILLシグナルを渡すことでシグナルをエスカレートできます。

kill -KILL PID_of_target_process

これは、プログラムに送信されない特別な信号です。

代わりに、オペレーティングシステムカーネルに渡され、プロセスがシャットダウンされます。これは、送信されたシグナルを無視するプログラムをバイパスするために使用されます...


2

Skypeを(私の場合は)殺すために書いた小さなスクリプトを書きました。

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

しかし、私はそれがうまくいったので、pidが異なる長さであり、スペースの量が異なっていたため、翌日は機能しなかったことがわかりました

それから私はこのサイトに出くわし、試しました

pgrep -l -u justin

便利な形式でプロセスを出力します

[pid] [name]

そこで、スクリプト内のコードを次のように調整しました。

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

これは、すべてのプロセスjustinが実行されているパイプ(任意のユーザー名に変更可能)をgrep探してskype(これをプロセスに変更できます)、その行にパイプを送りcut、PIDのみを読み取って最終的にそれを使用します強制終了するkillコマンドのPID 。


をドロップし-l、実行してpgrep -u justin skype、殺すために:(pkill -u justin skypeまたはpkill -KILL -u justin skypeSIGKILLを送信するため)。
ムル

これは間違いなくUnixの方法です。よくやりました。これを使います。
–SDsolar

1

ここに私が書いた単純なpythonスクリプト、killProcess.pyがあります。これは、入力として何でも受け入れ、それを殺します。

このスクリプトを書いたのは、多くのpythonまたはノードプロセスがあり、それらを個別にプログラムで強制終了するためです。「killall python」を使用することはできません。実行し続ける必要があるプロセスが停止するためです。

ファイルに「killProcess.py」という名前を付けてから、停止するスクリプトの名前を追加してください。例:python killProcess.py runnablePoller.pyはrunnablePoller.pyファイルを強制終了します

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));

0

Ubuntuでプロセスを強制終了するには、次の手順を使用しました::

ステップ1:grepを使用してプロセスのPIDを取得するか、-Cも使用できます::

ps aux | -C 'filename'

または

ps -ef | -C 'filename'

または

ps aux | grep 'filename'

または

ps -ef | grep 'filename' 

ステップ2:pid番号をメモします。

ステップ3:pid番号とともに「kill」コマンドを次のように使用します。

kill pidnumber

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.