Answers:
要杀死您有权杀死的所有进程,只需运行以下命令
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
firefox-bin
。
killall firefox
和killall firefox-bin
并看看有什么效果。我同意你的第一个评论。
使用sudo kill <pid>
或sudo killall <process-name>
我会将您的问题分为两部分:
1)我如何找到我启动的流程?运行这个:
ps -u `whoami`
的whoami
是以防万一你不知道你正在使用的帐户的名称,否则只需输入帐户的名称,而不反引号。
这将列出您的帐户可以删除的所有进程。
2)该ps
命令将列出进程号,TTY,时间和CMD。进程ID是第一列。使用该号码终止进程。终止进程时要小心。如果您杀死错误的过程,则可能会破坏某些东西。要终止进程,您将使用kill
命令,该命令将SIGNAL发送到该进程。该信号指示过程应执行的操作。例如,将a发送-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
从这个意义上说,鱼是Friendly Interactive SHell)。
的文档killall
可以在这里找到:http : //manpages.ubuntu.com/manpages/hardy/man1/killall.1.html
... Linux中的所有进程都响应信号。信号是告诉程序终止或修改其行为的操作系统级别的方法。
如何通过PID发送过程信号
将信号传递给程序的最常见方法是使用kill命令。
如您所料,此实用程序的默认功能是尝试终止进程:
kill PID_of_target_process
这会将TERM信号发送到该过程。TERM信号告诉该过程请终止。这使程序可以执行清理操作并顺利退出。
如果程序行为异常并且在给出TERM信号时没有退出,我们可以通过传递KILL信号来升级该信号:
kill -KILL PID_of_target_process
这是特殊信号,不会发送到程序。
而是将其提供给操作系统内核,以关闭进程。这用于绕过忽略发送给他们的信号的程序...
我写了一个小脚本来杀死(以我为例)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 skype
发送SIGKILL)。
这是我写的一个简单的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));
我使用以下过程杀死了Ubuntu中的一个进程::
步骤1:使用grep获取进程的pid,也可以使用-C ::
ps aux | -C 'filename'
要么
ps -ef | -C 'filename'
要么
ps aux | grep 'filename'
要么
ps -ef | grep 'filename'
步骤2:记下pid号。
步骤3:使用“ kill”命令和pid号为:
kill pidnumber
Ctrl可以将+ Alt+ Delete设置为使您能够访问任务管理器,从那里单击几下就很容易杀死进程,对我而言,对记住错误执行命令的要求就更少了:
http://ubuntuhandbook.org/index.php/2013/07/use-ctrl-alt-del-task-manager-ubuntu/
kill -15 -1
,直到kill -9 -1
有顽固的过程并且知道我在做什么才继续。随机终止可能在数据库事务中间的进程不是您应该随便建议的。