Linux终止前台进程的命令

Linux终止前台进程的命令,第1张

1、首先,连接相应linux主机,进入到linux命令行状态下,等待输入shell指令。

2、其次,以终止进程号1984的nginx子进程为例,在linux命令行中输入:kill -9 1984。

3、最后,按下回车键执行shell指令,此时会看到进程号1984的nginx子进程被成功终止了。

方法一: Terminal终端输入: gnome-system-monitor,就可以打开system monitor如图:然后找到相应进程,右击选择kill process就可以了方法二: 通过kill 进程id的方式可以实现,首先需要知道进程id, 例如,想要杀死firefox的进程,通过 ps -ef|grep firefox,可以查到firefox的进程id:然后通过 kill 3781 就可以关闭进程了.补充: 1. kill -9 来强制终止退出, 例如: kill -9 37812.特殊用法:kill -STOP [pid]发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。kill -CONT [pid]发送SIGCONT (19,18,25)重新开始一个停止的进程。kill -KILL [pid]发送SIGKILL (9)强迫进程立即停止,并且不实施清理 *** 作。kill -9 -1终止你拥有的全部进程。方法三: killall 通过程序的名字,来杀死进程例如: killall firefox注意: 该命令可以使用 -9 参数来强制杀死进程, killall -9 firefox方法四: pkill 通过程序的名字, 直接杀死所有进程例如: pkill firefox方法五: 通过xkill 可以杀死图形程序应用, 例如firefox崩溃无响应,可以使用该命令.例如: 用法xkill , 会出现一个白色的x, 然后用鼠标单击想要杀死的应用,如图以下内容引用自: http://justcoding.iteye.com/blog/1931347◆编者注:KILLALL(Section: User (1)/Updated: 1999年9月7日)———————————————– NAME (名称)killall – 以名字方式来杀死进程 SYNOPSIS (总览)killall [-egiqvw] [-signal] name …killall -lkillall -V DESCRIPTION (描述)killall 发送一条信号给所有运行任意指定命令的进程. 如果没有指定信号名, 则发送SIGTERM.。信号可以以名字 (如 -HUP ) 或者数字 (如 -1 ) 的方式指定. 信号 0 (检查进程是否存在)只能以数字方式指定。如果命令名包括斜杠 (/), 那么执行该特定文件的进程将被杀掉, 这与进程名无关。如果对于所列命令无进程可杀, 那么 killall 会返回非零值. 如果对于每条命令至少杀死了一个进程, killall 返回 0。Killall 进程决不会杀死自己 (但是可以杀死其它 killall 进程)。 OPTIONS (选项)-e对 于很长的名字, 要求准确匹配. 如果一个命令名长于 15 个字符, 则可能不能用整个名字 (溢出了). 在这种情况下, killall 会杀死所有匹配名字前 15 个字符的所有进程. 有了 -e 选项,这样的记录将忽略. 如果同时指定了 -v 选项, killall 会针对每个忽略的记录打印一条消息。-g杀死属于该进程组的进程. kill 信号给每个组只发送一次, 即使同一进程组中包含多个进程。-i交互方式,在杀死进程之前征求确认信息。-l列出所有已知的信号名。-q如果没有进程杀死, 不会提出抱怨。-v报告信号是否成功发送。-V显示版本信息。-w等待所有杀的进程死去. killall 会每秒检查一次是否任何被杀的进程仍然存在, 仅当都死光后才返回. 注意: 如果信号被忽略或没有起作用, 或者进程停留在僵尸状态, killall 可能会永久等待。FILES(相关文件)/proc proc文件系统的存在位置。KNOWN bugS (已知 BUGS)以文件方式杀死只对那些在执行时一直打开的可执行文件起作用, 也即, 混杂的可执行文件不能够通过这种方式杀死。要警告的是输入 killall name 可能不会在非 Linux 系统上产生预期的效果, 特别是特权用户执行时要小心。在两次扫描的间隙, 如果进程消失了而被代之以一个有同样 PID 的新进程, killall -w 侦测不到。来源:http://www.ubuntuhome.com/ubuntu-kill-command.html下面来了解相关命令:一、查看进程的命令 有ps、pstree、pgrep等: 1、ps 显示进程信息,参数可省略 -aux 以BSD风格显示进程 常用-efH 以System V风格显示进程-e , -A 显示所有进程a显示终端上所有用户的进程x显示无终端进程u 显示详细信息f树状显示w 完整显示信息l 显示长列表在终端中执行ps aux,各列输出字段的含义:USER进程所有者PID 进程IDPPID 父进程%CPU CPU占用率%MEM 内存占用率NI 进程优先级。数值越大,占用CPU时间越少VSZ 进程虚拟大小RSS 页面文件占用TTY 终端IDSTAT 进程状态+---D 不可中断Uninterruptible sleep (usually IO)+---R 正在运行,或在队列中的进程+---S 处于休眠状态+---T 停止或被追踪+---Z 僵尸进程+---W 进入内存交换(从内核2.6开始无效)+---X 死掉的进程+---< 高优先级+---N 低优先级+---L 有些页被锁进内存+---s 包含子进程+---+ 位于后台的进程组;+---l 多线程,克隆线程 multi-threaded (using CLONE_THREAD, like NPTL pthreads do)PID:进程标识符,系统为每一个进程分配一个识别码,称为PID。ps命令极为常用,其他命令还有:2.pstree树状显示进程信息-a 显示完整命令及参数-c 重复进程分别显示-c 显示进程ID PID-n 按 PID 排列进程3.pgrep <进程名> 显示进程的PID-l 显示进程名和进程PID-o 进程起始ID-n 进程终止ID二、结束进程的命令 有kill、pkill、killall、xkill等:kill [信号代码] <进程PID>根据PID向进程发送信号,常用来结束进程,默认信号为 -9信号代码,可取值如下:-l [信号数字] 显示、翻译信号代码-9 , -KILL 发送 kill 信号退出-6 , -ABRT 发送 abort 信号退出-15 , -TERM 发送 Termination 信号-1 , -HUP 挂起-2 , -INT 从键盘中断,相当于 Ctrl+c-3 , -QUIT 从键盘退出,相当于 Ctrl+d-4 , -ILL 非法指令-11 , -SEGV 内存错误-13 , -PIPE 破坏管道-14 , -ALRM-STOP 停止进程,但不结束-CONT 继续运行已停止的进程-9 -1 结束当前用户的所有进程pkill <进程名>结束进程族。如果结束单个进程,请用 killkillall <进程名> killall和pkill 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。xkill 在图形界面中点杀进程。当xkill运行时鼠标指针变为骷髅图案,哪个图形程序崩溃一点就OK了。如果您想终止xkill ,就按右键取消。比如当firefox 出现崩溃不能退出时,点鼠标就能杀死firefox 。xkill 调用方法:[root@localhost ~]# xkill来源: http://www.cnblogs.com/1024-wusuopuBUPT/archive/2012/02/16/2354132.htmllinux中pkill的简单用法pkill 和killall 应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill 来杀掉。必要参数-f 显示完整程序-l 显示源代码-n 显示新程序-o 显示旧程序-v 与条件不符合的程序-x 与条件符合的程序选择参数-p<进程号>列出父进程为用户指定进程的进程信息-t<终端>指定终端下的所有程序-u<用户>指定用户的程序应用方法:#pkill 正在运行的程序名举例:Java代码 [root@localhost beinan]# pgrep -l gaim 2979 gaim [root@localhost beinan]# pkill gaim 也就是说:kill 对应的是 PIDpkill 对应的是COMMAND例如在Ubuntu中强制结束一个已成僵尸的名称为:firefox,PID为:1603的进程,可以如下 *** 作:方法一:(1)ctrl+alt+t,调出终端,输入 top,然后就可以看到现在系统的进程,是按占用资源从多到少排列的。找到要关掉的进程,记下该进程第一列的数字编号(假设是xx),然后输入q,退回终端。(2)输入:sudo kill xx(对应刚才的编号)。方法二:ctrl+alt+t,调出终端,输入:sudo pkill firefox范例1: 杀死指定进程Java代码 root@snail-hnlinux:~# ps -A //显示所有进程 PID TTY TIME CMD 1 ? 00:00:03 init 2 ? 00:00:00 kthreadd 3 ? 00:00:00 migration/0 4 ? 00:00:00 ksoftirqd/0 5 ? 00:00:00 watchdog/0 ……忽略部分 28382 ? 00:00:00 gvfsd-http 28391 ? 00:07:07 software-center 30467 ? 00:00:31 designer-qt4 30487 ? 00:00:06 gnome-terminal 30488 ? 00:00:00 gnome-pty-helpe 30489 pts/0 00:00:00 bash 30670 ? 00:00:00 debconf-communi 30749 pts/0 00:00:17 gedit 31155 ? 00:00:00 dhclient 31325 ? 00:00:01 sshd 31327 ? 00:00:00 sshd 31400 pts/1 00:00:00 bash 31485 pts/2 00:00:00 bash 31653 ? 00:00:00 aptd 31658 pts/1 00:00:00 ps root@snail-hnlinux:~# pidof sshd //查看与sshd相关进程 31327 31325 2095 root@snail-hnlinux:~# pkill -9 sshd //杀死指定进程 范例2:杀死同义终端下的进程Java代码 root@snail-hnlinux:~# pkill -t tty1 //杀死终端1下的所有进程 范例3: 杀死指定用户进程Java代码 root@snail-hnlinux:~# pkill -u hnlinux 范例4:反向选择Java代码 root@snail-hnlinux:~# pkill -vu hnlinux //杀死不属于hnlinux用户的所有进程————————————————版权声明:本文为CSDN博主「MrCoderr」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/coderder/article/details/78899823

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

-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,下面将通过例子来说明其具体用法.

[例20] 以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 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash

test 5836 0.0 0.3 2528 856 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/sbin/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 [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资源消灭一个客户程序


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8300091.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存