Linux操作系统中的kill 0命令原理及应用详解 (linux kill -0)

Linux操作系统是一款非常强大的操作系统,它可以为用户提供强大的控制和管理能力。在Linux系统中,kill命令是一个非常重要的命令,它被用来终止正在运行的进程。在kill命令中,kill 0命令被认为是最有用的命令之一,因为它可以同时杀死所有当前用户的进程。本文将详细介绍kill 0命令的原理及其应用。

一、kill命令概述

kill命令是一款在Linux系统中非常常见的进程管理工具,它的作用是终止正在运行的进程。kill命令可以向进程发送各种不同的信号,其中最常用的是SIGTERM信号。SIGTERM信号可以向进程发送一个通知,告诉它需要正常退出。当进程接收到SIGTERM信号后,它会根据当前进程所处的状态做出相应的行为。例如,如果进程正在等待某个事件的发生,它会允许该事件发生并正常退出。如果进程正在执行某个操作,它会在完成当前的操作后正常退出。

二、kill 0命令的原理

在Linux系统中,kill 0命令被认为是最有用的命令之一。kill 0命令可以同时杀死当前用户所有的进程。这意味着如果您想强制终止当前用户所有的进程,您只需要执行kill 0命令即可。

kill 0命令的原理非常简单。实际上,kill 0命令只是向进程组号为0的进程群发送了一个SIGTERM信号。在Linux系统中,进程组号为0的进程群是所有进程组的父进程组。因此,当您执行kill 0命令时,Linux系统会向系统中所有正在运行的进程发送SIGTERM信号。所有接收到信号的进程都会在接收到信号后尽快终止运行。

三、kill 0命令的应用

在Linux系统中,kill 0命令是一个非常常用的命令。此命令通常用于以下情况:

1. 快速结束所有正在运行的进程

如果您需要快速结束当前用户的所有进程,您可以使用kill 0命令。该命令会向系统中所有正在运行的进程发送SIGTERM信号,以便让它们正常退出。对于一些普通用户,由于没有root权限并且不应该杀死其他用户的进程,该命令有可能失效。

2. 结束僵尸进程

在Linux系统中,僵尸进程是一种无法正常结束的进程。它们会一直存在,直到系统进程为它们回收资源。如果您想结束所有僵尸进程,您可以使用kill 0命令。该命令会向所有进程发送一个SIGTERM信号,以便让它们正常退出。有些情况下未结束的僵尸进程可能是未停止的bug程序未正确结束,此时可以使用该命令关闭。

在本文中,我们详细讲解了Linux操作系统中的kill 0命令的原理及其应用。kill命令是Linux系统中一个非常重要的工具,它可以用来终止正在运行的进程。kill 0命令可以同时杀死当前用户所有的进程。如果您想终止所有正在运行的进程,或者想结束所有僵尸进程,您可以使用kill 0命令来实现。当然,在使用kill命令时,请注意不要误删重要的进程,避免对系统造成不可挽回的损害。

相关问题拓展阅读:

linux怎么停止进程

Linux查询进程和结束进程

1.  ps -ef |grep redis

ps:将某个进程显示出桐毁来

-A  显示所有程序。

-e  此参数的效果和指定”A”参数相同。

-f  显示UID,PPIP,C与STIME栏位。

grep命令是查找

中间的|是管道命令 是指ps命令与grep同时执行

这条命令的意思是显示有关redis有关的进程

2.   kill

   kill

kill就是给某个进程id发送了一个信号。默认发送的信号是SIGTERM,而kill -9发送的信号是SIGKILL,即exit。exit信号不会被系统阻塞,所以kill -9能顺利杀掉进程。当然你卜轮扰也可以使用kill发送其他信号给进程。 更具体的Linux命令介绍可如下进行查看:

Linux查看进程和终止进程的技巧

1. 在LINUX命令平台输入1-2个字符后按Tab键会自动补全后面的部分(前提是要有这个东西,例如在装了tomcat的前提唯滚或下,输入tomcat的to按tab)。

2. ps 命令用于查看当前正在运行的进程。

grep 是搜索

例如: ps -ef | grep java

表示查看所有进程里CMD是java的进程信息

ps -aux | grep java

-aux 显示所有状态

ps

3. kill 命令用于终止进程

例如: kill -9

-9表示强迫进程立即停止

通常用ps 查看进程PID ,用kill命令终止进程

网上关于这两块的内容

PS

1. ps简介

ps命令就是最根本相应情况下也是相当强大指伍地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态、进程是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地.

2. ps命令及其参数

ps命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设

备进行通信地,所以如果需要检测其情况,便可以运用ps命令了.

该命令语法格式如下:

ps

-e 显示所有进程,环境变量

-f 全格式

-h 不显示标题

-l 长格式

-w 宽输出

a 显示终端上地所有进程,包括其他用户地进程

r 只显示正在运行地进程

x 显示没有控制终端地进程

O k1 k2 > 根据SHORT KEYS、k1、k2中快捷键指定地多级排序顺序显示进程列表.

对于ps地不同格式都存在着默认地顺序指定.这些默认顺序可以被用户地指定所覆盖.在这里面“+”字符是可选地,“-”字符是倒转指定键地方向.

pids只备袜列出进程标识符,之间运用逗号分隔.该进程列表必须在命令行参数地最后一个选项后面紧接着给出,中间不能插入空格.比如:ps -f1,4,5.

以下介绍长命令行选项,这些选项都运用“–”开头:

–sort X key key > 从SORT KEYS段中选一个多字母键.“+”字符是可选地,因为默认地方向就是按数字升序或者词典顺序.比如: ps -jax -sort=uid,-ppid,+pid.

–help 显示帮助信息.

–version 显示该命令地版本信息.

在前面地选项说明中提到了排序键,接下来对排序键作进一步说明.需要注意地是排序中运用地值是ps运用地内部值,并非仅用于某些输出格式地伪值.排序键列表见表4-3.

表4-3 排序键列表

c

cmd

可执行地简单名称

C

cmdline

完整命令行

f

flags

长模式标志

g

pgrp

进程地组ID

G

tpgid

控制tty进程组ID

j

cutime

累计用户时间

J

cstime

累计系统时间

k

utime

用户时间

K

stime

系统时间

m

min_flt

次要页错误地数量

M

maj_flt

重点页错误地数量

n

cmin_flt

累计次要页错误

N

cmaj_flt

累计重点页错误

o

session

对话ID

p

pid

进程ID

P

ppid

父进程ID

r

rss

驻留大小

R

resident

驻留页

s

size

内存大小(千字节)

S

share

共享页地数量

t

tty

tty次要设备号

T

start_time

进程启动地时间

U

uid

UID

u

user

用户名

v

vsize

总地虚拟内存数量(字节)

y

priority

内核调度优先级

3. 经常使用ps命令参数

最经常使用地三个参数是u、a、x,下面将通过例子来说明其具体用法.

以root身份登录系统,查看当前进程状况

$ ps

PID TTY TIME COMMAND

5800 ttyp0 00:00:00 bash

5835 ttyp0 00:00:00 ps

可以看到,显示地项目共分为四项,依次为PID(进程ID)、TTY(终端名称)、TIME(进程执行时间)

、COMMAND(该进程地命令行输入).

可以运用u选项来查看进程所有者及其他少许详细信息,如下所示:

$ ps u

USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND

test.0 0.ttyp0 S Nov27 0:00 -bash

test.0 0.ttyp0 R Nov27 0:00 ps u

在bash进程前面有条横线,意味着该进程便是用户地登录shell,所以对于一个登录用户来说带短横线地进程只有一个.还可以看到%CPU、%MEM两个选项,前者指该进程占用地CPU时间和总时间地百分比;后者指该进程占用地内存和总内存地百分比.

在这种情况下看到了所有控制终端地进程;当然对于其他那些没有控制终端地进程还是没有观察到,所以这时就需要运用x选项.运用x选项可以观察到所有地进程情况.

KILL

由于职责的要求,你不得不费力地阅读那些令你感到费解的晦涩的Linux应用程序的说明文件。然后,你将运行指令和编辑设置文件。一切都在正常 运行,生活真美好。但是,你知道,好时光不会永远持续下去。当你遇到令人恐惧的“send the process a SIGHUP”提示时,好时光结束了。

什么是“SIGHUP(启动信号)”,你如何发送它?它像是你送给你的恋人的一束花吗?虽然你可以肯定这不是一个命令行指令,不过,你还是试着 键入它。当然,这没有结果。然后,你检查一下键盘。哦,没有SIGHUP键。于是你又重新阅读这个应用程序的参考指南,看到下面这段文字:

当收到一个hangup(进程结束)信号时,sshd程序会重新阅读配置文件。通过执行启动程序时的命令及选项来发送SIGHUP信号,如:/usr/in/sshd。

哦,原来是这样。

程序员 VS 使用者

LINUX程序的在线参考指南作者一般都要既照顾到最终用户的需求也要照顾到高级程序员的需求。因此,有些说明比较难懂。不过,不要担心。现在我们就要揭开覆盖在这些让人迷惑的内容上面那神秘的面纱。

信号与进程控制

这个问题主要属于信号和进程控制的范畴。对于我们系统管理员和普通用户来说,我们主要关心的是启动、停止和重新启动服务、停止失控的进程和被挂起的进程,并且尽可能不中断系统运行。因为不同的

操作系统和不同的命令外壳处理信号的方式都不相同,我们这里只介绍Linux操作系统和bash外壳。

信号是用来与守护程序和进程通信的。任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个 程序必须有建在其中的信号处理程序用于捕获和应答信号。在LINUX中的signal 参考指南解释了各种不同信号和这些信号的用途。信号是由“kill”命令发出的。kill -l命令可以显示一个可用信号列表及其编号。

所有的守护程序和进程都有一个进程ID(PID),例如使用ps命名所显示的内容:

$ ps aux

USER PID %CPU %MEM TTY STAT COMMAND

root 1 0.0 0.1 ? S init

.0 0.2 ? Ss /usr/bin/dbus-daemon –system

hal.0 0.7 ? Ss /usr/in/hald

postfix.0 0.2 ? S qmgr -l -t fifo -u -c

nagios.0 0.2 ? SNs /usr/in/nagios /etc/nagios/nagios.cfg

这个输出是经过简化的。你在系统中可以看到更多的行和栏目。如果某些进程消耗了你的全部CPU或者内存,你可以在这个输出的%CPU和%MEM 列中发现它们。找到失控的进程的一种更快捷的方法是使用top命令,因为按照默认的设置,使用占用CPU资源最多的进程在最上面显示。我们可以使用一条 “yes”命令来测试一下:

$ yes carla is teh awesum

这个命令将以很高的速度反复显示“carla is teh awesum”,直到你停止它运行。这将使你的CPU使用率达到警戒线。

$ top

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

12144 carlam 13m R 93.4 3.5 0:50.26 konsole

22236 carla 400 S 4.3 0.1 0:00.97 yes

分析一下这个结果,你会发现一些有趣的事,你会发现,占用CPU最多的程序是konsole虚拟终端程序,而不是“yes”命令,这是因为 “yes”命令是在konsole终端程序中运行的。如果在一个“真正的”控制台(按Ctrl+alt+f2键)中运行同样的命令序列,你将看到 “yes”命令被排在之一位。

有许多停止“yes”命令运行的方式。如果你要回到运行它的shell中,按CTRL+c键就可以了。或者你可以在另一个shell中用“kill”命令停止“yes”命令的运行,Kill命令后面跟PID或者命令名称,如下如示:

$ kill 22236

或者

$ killall yes

按CTRL+c键发出一个SIGINT(信号2),这个信号是键盘要求取得控制权的中断信号。kill和killall这两个命令按照默认的设 置都发出一个SIGTERM信号(编号15)。程序中可以设置对SIGTERM信号(15)是捕捉或者忽略,或者以不同的方式解释。因此,如果你的程序对 于 KILL命令的反应与你预期不同,很可能是被KILL的目标程序的问题。

终止一个父进程通常也终止了它的子进程。不过,情况并不总是如此。你知道子进程是什么吗?使用ps命令加上-f选项就可以看到,如下所示:

$ ps axf

22371 ? R 2:35 _ konsole

22372 pts/3 Ss 0:00 | _ /bin/bash

24322 pts/3 S+ 0:00 | | _ yes carla is teh awesum

22381 pts/4 Rs 0:00 | _ /bin/bash

24323 pts/4 R+ 0:00 | | _ ps axf

现在,回到SIGHUP的话题

SIGHUP的发音是“sig-hup”,是signal hangup的缩写,含义是“中止信号”。你如何发送一个SIGHUP信号呢?这里有几种方式:

# kill -HUP

# killall -HUP

# kill -1

# killall -1

因此,你可以使用PID或者名称,信号名称或者号码。那么为什么要这样做而不使用/etc/init.d/foo命令重新启动呢?使用它们自己 的 init(初始化)文件来控制服务是优先选择的方式,因为这些文件通常包含健全和错误检查以及额外的功能。使用“kill”命令和信号的主要原因是尽可能 明确地终止挂起和失控的进程,而不必重新启动或者登出。

终止进程

正如你在关于信号的man page中所看到的,有十几种控制进程的方法。下面是一些常用的方法:

kill -STOP

发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。

kill -CONT

发送SIGCONT (19,18,25)重新开始一个停止的进程。

kill -KILL

发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。

kill -9 -1

终止你拥有的全部进程。

SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。所以这是你的终极武器。

Bash shell的Kil命令l

Bash外壳包含一个内置的kill命令,当执行下面命令:

$ type -all kill

kill is a shell built-in

kill is /bin/kill

命令的结果表明有两个kill命令,一个是BASH的内置命令,另一个是/bin/kill可执行程序。一般来说这两个命令不太可能遇到冲突的情况,不过,如果你确实遇到了kill命令行为异常时,你可以明确的指定/bin/kill命令。

你一定要进一步查阅下面的资源中列出的参考资源来了解Linux中kill的妙用,因为这是你进入维护Linux系统领域的门票。这些知识能够让你像做外科手术一样对系统进行维护,而不用在遇到问题时每一次都重新启动系统,就像我们知道的某些蹩脚的

操作系统那样。

资源

Linux Cookbook一书的第七章“开始和终止Linux”

bash (1) – GNU Bourne-Again Shell

yes (1) – 在被终止前反复打印字符

signal (7) – 可用信号列表

ps (1) – 报告当前进程的快照

kill (1) – 向一个进程发出信号

killall (1) – 按名字消灭进程

pkill (1) – 根据名字和其它属性查看或者发出进程信号

skill (1) – 发送一个信号或者报告进程状态

xkill (1) – 按照X资源消灭一个客户程序

1.可以使用以面命令来查亏敏掘看

ps -ef |grep tomcat

2.tomcat它是一个Java进程,所以查找Java进程也可查找出来

ps -ef|grep java

3.可以看到

用户销核 和进程拿并编号

Linux中的kill与kill -9

1、我们经常会用到kill命令去杀死一个进程,但是有时会出现kill不成功山帆尘的现象,这是就要用到kill -9。

2、之所以这两个命令会有区别是因为所发送的 信号(Signal) 是不同的:

默认情况下kill命令的参数为-15,如下逗禅图所示:

kill -15代表的信号为SIGTERM,这是告诉进程你 需要被关闭,请自行轿悉停止运行并退出 ;

而kill -9代表的信号是SIGKILL,表示进程被终止,需要 立即退出 ;

3、因此kill -9表示强制杀死该进程,这个信号 不能被捕获也不能被忽略 。

Linux几种中断信号的区别:HUP,INT,KILL,TERM,TSTP

HUP终端断线

INT中断(同 Ctrl + C)

QUIT退出(同 Ctrl + \)

TERM终止

KILL强制终止

CONT继续(与STOP相反, fg/bg命令)

STOP暂停(同 Ctrl + Z)

INT—-是当用户键入时由终端驱动程序发送的信号.这是一个终止当前操作的请求.如果捕获了这个信号,一些简单的程序应该退出,或者允许自给被终止,这也是程序没有捕获到这个信号时的默认处理方法.拥有命令行或者输入模式的那些昌郑程序应该停止它们在做的事情,清除状态,并等饥迅锋待用户的再次输入.

TERM—-是请求彻底终止某项执行操作.它期望接收进程清除自给的状态并退出

HUP—- 有两种解释.

1,他被许多守护进程理解为一个重新设置的请求.如果一个进程不用重新启动就能重新读取它的配置文件并调整自给以适应变化的话,那么HUP通常来触发这种行为.

2.HUP信号有时候又终端驱动程序生成,试图来”清除”(“终止”)跟某个特定终端相连的那些进程.例如:某个终端会话结束时,或者当调制解调器被挂断时,shell后台不接受HUP的信号的烂晌影响.有的的用户可以使用nohup来模仿这种行为.

QUIT和TERM类似—-不同的是:它会生成内存转储

Linux的HUP,INT,KILL,TERM,TSTP中断信号区别为:键入不同、对应操作不同、启用不同。

一、键入不同

1、HUP中断信号:HUP中断信号是当用户键入时由终端

驱动程序

发送的信号。

2、INT中断信号:INT中断信号是当用户键入时由终端驱动程序发送的信号。

3、KILL中断信号:KILL中断信号是当用户键入时由终端驱动程序发送的信号。

4、TERM中断信号:TERM中断信号是当用户键入时由终端驱动程序发送的信号。

5、TSTP中断信号:TSTP中断信号是当用户键入时由终端驱动程序发送的信号。二、对应操作不同

1、HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。

2、INT中断信号:INT中断信号的对应操作为正常关闭所有进程。

3、KILL中断信号:KILL中断信号的对应操作为强制关闭所有进程。

4、TERM中断信号:TERM中断信号的对应操作为正常的退出进程。

5、TSTP中断信号:TSTP中断信号渗枯大的对应操作为暂时停用进程。

三、启用不同

1、HUP中断信号:HUP中断信号发送后,可以重新被用户再次输入恢复启用进程。

2、INT中断信号:INT中断信号发送后,不可以重新被用户再次输入恢复启用进程。

3、KILL中断信号:KILL中断信号发送后,不可以重新被用户再次输入恢复启用进程。

4、TERM中断信号:TERM中断信号发送后,可以重新被用户再次输入启用进程。

5、TSTP中断信号:TSTP中断信丛竖号发送后,可以重新被用户再次输入继续使用进败仔程。

区别具体如下:

1、键入不同

①HUP中断信号:HUP中断信号是当用户键入时由终端驱动程序发送的信号。

②INT中断信号:INT中断信号是当用户键入时由终端驱动程序发送的信号。

③KILL中断信号:KILL中断信号是当用户键入时由终端驱动程序发送的信号。

④TERM中断信号:TERM中断信号是当用户键入时由终端驱动程序发送的信号。

⑤TSTP中断信号:TSTP中断信号是当用户键入时由终端驱动程序发送的信号。

2、对应操作不同

①HUP中断信号:HUP中断信号的对应操作为让进程挂起,睡眠。

②INT中断信号:INT中断信号的对应操作为正常关闭所有进程。

③KILL中断信号:KILL中断信号的对应操作为强制关闭所有进程。

④TERM中断信号:TERM中断信号的对应操作为正常的退出进程。

⑤TSTP中断信号:TSTP中断信号的对应操作为暂时停用进程。

3、启用不同

①HUP中断信号:HUP中断信号发送后,可以重新被用户再次输入恢复启用进程。

②INT中断信号:INT中断信号发送后,不可以重新被用户再次输入恢复启清悉扮用进程。

③KILL中断信号:KILL中断信号发送后,不可以重新被用户再次输入恢复启用进程。

④TERM中断信号:TERM中断信号发送后,可以重新被用户再次输入答灶启用进程。陆知

⑤TSTP中断信号:TSTP中断信号发送后,可以重新被用户再次输入继续使用进程。

HUP是让进程挂起,睡眠

INT 中断迟老祥(同 Ctrl + C)码搏

kill 六亲不含高认的杀掉

term正常的退出进程

TSTP 停止位

而kill -15是正常杀掉?州拿 他们三者之间有什么区别?谢谢! ctrl+c是终止当前在终枣戚端窗凳迹陵口中运行的命令或脚本, kill -9 pid,是不顾后果的强制终止(,

关于linux kill -0的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux操作系统中的kill 0命令原理及应用详解 (linux kill -0)