`
yanghua812
  • 浏览: 52595 次
  • 性别: Icon_minigender_2
  • 来自: 重庆
社区版块
存档分类
最新评论

Linux 终止进程的命令

阅读更多
1、在执行find命令时,由于时间过长,决定终止该进程
首先使用ps命令来查看该进程对应的PID,键入ps,显示如下:
  PID TTY          TIME CMD
18284 pts/5    00:00:00 bash
19080 pts/5    00:00:00 ps
345   pts/5    00:00:00 find / -name startWebLogic.sh
可以看到该进程的PID是345,现在使用KILL命令来终止该进程,键入:
kill 345
再用ps命令查看,就可以看到,find进程已被杀掉了

停止和重启进程
有时只想简单的停止和重启进程,如下:
#kill -hup pid
该命令让linux和缓的执行进程关闭,然后立即重启,在配置应用 程时,这个命令很方便,在对配置文件修改后需要重启进程就可以执行此命令

一. 终止进程的工具 kill 、killall、pkill、xkill
终止一个进程或终止一个正在运行的程序,一般是通过 kill 、killall、pkill、xkill 等进行。比如一个程序已经死掉,但又不能退出,这时就应该考虑应用这些工具。

另外应用的场合就是在服务器管理中,在不涉及数据库服务器程序的父进程的停止运行,也可以用这些工具来终止。为什么数据库服务器的父进程不能用这些工具杀死呢?原因很简单,这些工具在强行终止数据库服务器时,会让数据库产生更多的文件碎片,当碎片达到一定程度的时候,数据库就有崩溃的危险。比如mysql服务器最好是按其正常的程序关闭,而不是用pkill mysqld 或killall mysqld 这样危险的动作;当然对于占用资源过多的数据库子进程,我们应该用kill 来杀掉。

1. kill

kill的应用是和ps 或pgrep 命令结合在一起使用的;

kill 的用法:

kill [信号代码]     进程ID

注:信号代码可以省略;我们常用的信号代码是 -9 ,表示强制终止;

举例:

[root@localhost ~]# ps auxf |grep httpd

root 4939 0.0 0.0 5160 708 pts/3 S+ 13:10 0:00 \_ grep httpd

root 4830 0.1 1.3 24232 10272 ? Ss 13:02 0:00 /usr/sbin/httpd

apache 4833 0.0 0.6 24364 4932 ? S 13:02 0:00 \_ /usr/sbin/httpd

apache 4834 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd

apache 4835 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd

apache 4836 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd

apache 4840 0.0 0.6 24364 4928 ? S 13:02 0:00 \_ /usr/sbin/httpd
我们查看httpd 服务器的进程;您也可以用pgrep -l httpd 来查看;

我们看上面例子中的第二列,就是进程PID的列,其中4830是httpd服务器的父进程,从4833-4840的进程都是它4830的子进程;如果我们杀掉父进程4830的话,其下的子进程也会跟着死掉;

[root@localhost ~]# kill 4840 注:杀掉4840这个进程;

[root@localhost ~]# ps -auxf |grep httpd 注:查看一下会有什么结果?是不是httpd服务器仍在运行?

[root@localhost ~]# kill 4830 注:杀掉httpd的父进程;

[root@localhost ~]# ps -aux |grep httpd 注:查看httpd的其它子进程是否存在,httpd服务器是否仍在运行?


对于僵尸进程,可以用kill -9 来强制终止退出;

比如一个程序已经彻底死掉,如果kill 不加信号强度是没有办法退出,最好的办法就是加信号强度 -9 ,后面要接杀父进程;比如;

[root@localhost ~]# ps aux |grep gaim

beinan 5031 9.0 2.3 104996 17484 ? S 13:23 0:01 gaim

root 5036 0.0 0.0 5160 724 pts/3 S+ 13:24 0:00 grep gaim

或 [root@localhost ~]# pgrep -l gaim

5031 gaim

[root@localhost ~]# kill -9 5031

2. killall

killall 通过程序的名字,直接杀死所有进程,咱们简单说一下就行了。

用法:killall 正在运行的程序名

killall 也和ps或pgrep 结合使用,比较方便;通过ps或pgrep 来查看哪些程序在运行;

举例:

[root@localhost beinan]# pgrep -l gaim

2979 gaim

[root@localhost beinan]# killall gaim

3. pkill

pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。

应用方法:

#pkill 正在运行的程序名


举例:

[root@localhost beinan]# pgrep -l gaim

2979 gaim

[root@localhost beinan]# pkill gaim

4. xkill

xkill 是在桌面用的杀死图形界面的程序。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。当xkill运行时出来和个人脑骨的图标,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消;

xkill 调用方法:

[root@localhost ~]# xkill

二.Linux的kill命令与信号控制

信号是用来与守护程序和进程通信的。任何活动任务都是一个进程,而守护程序是等待对某些事件做出反应或者按照日程安排执行任务的后台服务。一个程序必须有建在其中的信号处理程序用于捕获和应答信号。在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 [2]

105 7783 0.0 0.2 ? Ss /usr/bin/dbus-daemon --system

hal 7796 0.0 0.7 ? Ss /usr/sbin/hald

postfix 7957 0.0 0.2 ? S qmgr -l -t fifo -u -c

nagios 8371 0.0 0.2 ? SNs /usr/sbin/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 carla 25 0 31592 17m 13m R 93.4 3.5 0:50.26 konsole

22236 carla 15 0 2860 468 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 [kdeinit]

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 [pid]

# killall -HUP [process-name]

# kill -1 [pid]

# killall -1 [process-name]

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

终止进程

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

kill -STOP [pid]

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

kill -CONT [pid]

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

kill -KILL [pid]

发送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资源消灭一个客户程序

分享到:
评论

相关推荐

    Linux 进程管理命令

    Linux 进程管理命令 Linux 进程管理命令是 Linux 操作系统中用于管理进程的命令,它们是 Linux 系统管理员的基本工具。这些命令可以用来查看、管理和控制进程,从而确保系统的稳定运行。 1. 程序和进程 在 Linux ...

    linux查看进程和终止进程

    通过本文的学习,您应该掌握了如何使用`ps`命令来查看Linux系统中的进程信息以及如何使用`kill`命令来终止进程。这两种命令是Linux系统管理中非常实用的工具,对于日常运维工作具有重要意义。正确地使用它们可以帮助...

    linux 查找进程及终止进程操作的相关命令.docx

    Linux 查找进程及终止进程操作的相关命令 Linux 操作系统中,查找和终止进程是非常重要的操作。为了帮助用户更好地管理进程,本文将详细介绍 Linux 中查找和终止进程的相关命令。 查找进程的命令:ps ps 命令是 ...

    linux linux进程管理 常用命令

    kill 命令和 killall 命令用于终止进程,提供了进程管理的灵活性。kill 命令的基本格式为:`kill [选项] PID`,其中选项可以是: * -9:强制终止进程。 * -s:发送指定的信号。 例如,使用 `kill -9 1234` 命令...

    linux进程管理与命令

    8. 终止进程命令:kill [-9] PID kill 命令可以终止指定的进程,例如 kill -9 PID 命令可以强制终止指定的进程。其中,PID 是要终止的进程 ID 号。 Linux 进程管理命令可以帮助用户更好地管理系统中的进程,提高...

    Linux查看和终止进程[定义].pdf

    Linux 查看和终止进程 Linux 操作系统中,查看和终止进程是非常重要的任务。...ps 命令和 kill 命令是 Linux 中两个非常重要的命令,它们可以帮助管理员查看和终止进程,从而确保系统的稳定运行。

    终止进程或进程组

    在Linux系统中,kill命令用于终止进程或进程组。该命令可以发送指定的信号到指定的进程或进程组。 kill命令的基本用法 kill命令的基本语法为:`kill [ -s signal | -p ] [ -a ] [ -- ] pid ...` 其中,`pid`指定...

    Linux进程管理命令详解.pdf

    kill命令的格式为:kill [信号] PID,信号可以是-1、2、3、9、15、17、18、19、20等,其中-1表示终止进程,2表示中断进程,3表示停止进程,9表示强制终止进程,15表示正常终止进程,17表示挂起进程,18表示继续进程...

    linux查看进程指令

    如果需要终止某个进程,可以使用`pkill`命令,它类似于`pgrep`,但附加了终止进程的功能。例如,`pkill firefox`将杀死所有名为`firefox`的进程。 ### htop:增强版top `htop`是一个功能更强大的进程查看器,它...

    进程实验_Linux系统进程实验_

    通过`ps`命令可以查看系统中的进程状态。 3. **进程创建**: 在Linux中,我们通常使用`fork()`函数来创建新的进程。这个函数会复制当前进程的上下文,生成一个新的进程。文件"创建进程1.txt"和"创建进程2.txt"可能...

    Linux进程管理命令[参考].pdf

    本文主要讨论了三个关键的Linux进程管理命令:ps、top和pstree,以及如何终止进程。 首先,`ps`命令是查看系统当前进程状态的基本工具。它可以展示进程的各种属性,如进程ID(PID)、用户、CPU时间、状态等。通过...

    强制终止进程

    Linux系统中,可以使用`ps`命令查看进程,`kill`或`pkill`命令终止进程。 3. **多进程终止** 在本程序中,用户可以配置需要终止的进程名字,最多可设置256个。这涉及到批量处理进程的能力,程序可能通过遍历当前...

    linux系统进程管理

    例如,`kill -9 PID`可以强制终止进程。 - **nice命令**:用于设置进程的优先级。优先级较低的进程可能会被系统调度器给予较少的CPU时间。 - **renice命令**:用于更改正在运行进程的优先级。 - **nohup命令**:使...

    Linux下进程管理实验

    `kill`和`killall`命令则用于管理和终止进程,而`nice`和`renice`可以调整进程的优先级,影响其在CPU时间片分配中的顺序。 并发执行是现代操作系统中的一个基本特性,它使得多个进程可以在同一时间间隔内交替执行,...

    linux实验五_进程管理命令.pdf

    kill命令是终止进程的命令。有时候进程会出错或不再需要,需要强制停止。使用kill命令可以向指定的进程发送信号。常见的信号包括SIGTERM(信号15,请求终止进程)、SIGKILL(信号9,强制终止进程)。例如,kill -9 ...

    如何监控和保护Linux下进程安全

    如果在前台执行该命令,它将独占前台,直到用户终止该程序为止。比较准确地说,top命令提供了实时的对系统处理器的状态监视。它可以显示系统中CPU最“敏感”的任务列表。该命令可以按CPU使用、内存使用和执行时间对...

    Linux僵死进程的产生与避免.pdf

    Linux 操作系统中,僵死进程(Zombie Process)是一种特殊的进程状态,它是指一个进程已经终止,但是其父进程没有通过wait或waitpid函数来回收它的状态信息,而使得进程所占用的资源无法释放,导致系统资源的浪费。...

    Linux 多进程及其通信

    例如,`kill`命令发送一个信号来终止或暂停进程。文档"Linux进程间通信——使用信号.docx"可能会详细解释如何发送和处理不同类型的信号,以及如何自定义信号处理函数。 2. **信号量(Semaphores)**:信号量是同步...

    熟悉Linux命令及进程管理.pdf

    熟悉Linux命令及进程管理 本节内容主要围绕 Linux 命令和进程管理两个方面,通过实验和实践,帮助读者熟悉 Linux 命令和进程管理的基本概念和操作。 一、 Linux 命令 Linux 命令是 Linux 操作系统的基本组成部分...

    linux实验二 .docx

    本实验旨在掌握 Linux 进程操作命令,编写一个进程控制的程序,编写一个进程通信的程序。 一、Linux 进程操作命令 Linux 系统中提供了许多进程操作命令,以下是常用的命令: 1. ps 命令:ps 命令可以列出系统中的...

Global site tag (gtag.js) - Google Analytics