shell学习五十二天----删除进程kill命令

进程的控制与删除

使用kill命令可以终止进程.通常,终止一个前台进程可以使用ctrl+C键,但是对于一个后台进程就必须使用kill命令来终止,我们需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉进程.kill命令是通过向进程发送指定的信号来结束相应进程的.在默认情况下,采用编号为15的TREM信号.TERM信号将终止所有不能获取该信号的进程.对于那些可以获取该信号的进程就要用编号为9的kill信号,强行”杀掉”该进程.

kill命令详解

1.格式:

kill [参数] [进程号,也就是PID]

2.功能:

发送指定的信号到相应进程.不指定型号将发送SIFTERM(15)终止指定进程.如果无法终止该进程可以使用”-KILL”参数,其发送的信号为SIGKILL(9),将强制结束进程,使用ps命令或者jobs命令可以查看进程号.root用户将影响用户的进程,非root用户只能影响自己的进程.

3.参数


参数


说明


-l(小写字母)


信号,如果不加信号的编号参数,则使用”-l”参数会列出全部的信号名称


-a


当初李当前进程是,不限制命令名或进程号的对应关系


-p


指定kill命令只打印相关进程的进程号,而不发送任何信号


-s


指定发送信号


-u


指定用户

注意:

1.kill命令可以带信号号码选项,也可以不带.如果没有信号好吗,kill命令就会发出终止信号(15),这个信号可以被进程捕获,是的进程在推出之前可以清理并释放资源.也可以用kill向进程发送特定的信号.例如:

kill -2 123  //它的效果等同于在前台运行PID为123的进程同时按下Ctrl+C键.但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号.

2.kill可以带有进程ID号作为参数.当用kill想这些进程发送信号时,必须是这些进程的主人.如果试图撤销一个没有撤销权限的进程或撤销一个不存在的进程,就会得到一个错误信息.

3.可以向多个进程发信号或终止它们.

4.当kill成功的发送了信号后,shell会在屏幕上显示出进程的终止信息.有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来.

5.应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失后者终端无法恢复到正常状态.发送信号时必须小心,只有在万不得已时,采用kill信号(9),因为进程不能首先捕获它要撤销所有的后台作业,可以输入kill 0.因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事.这时,使用kill 0来终止所有当前shell启动的进程,是个有效的方法.

4.案例

案例1:

#kill -l //列出所有的信号名称

在输出中,只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略.以下是常用的信号:


信号名称


编号


说明


HUP


1


终端断线


INT


2


中断(同Ctrl+C)


QUIT


3


退出(同Ctrl)


TERM


15


终止


KILL


9


强制终止


CONT


18


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


STOP


19


暂停(同Ctrl+Z)

案例2:得到指定信号的数值(不区分大小写)

#kill -l term

15

#kill -l kill

9

#kill -l SIGKILL

案例3:配合ps命令,使用kill杀掉进程

#ps -ef | grep vim  //得到关于vim进程的PID,比如得到的PID是111

#kill 111  //删除vim进程

案例4:彻底杀死进程

#kill -9 111

案例5:杀死指定用户的所有进程

#kill -9 $(ps -ef| grep username)   //方法1

#kill -u username //方法2

案例6:init进程(PID为1)是不可杀的

#kill -9 1

这是因为init是linux系统中不可缺少的程序之一
.所谓的init进程,他是一个有内核启动的用户级进程.内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程.所以,init时钟是第一个进程(其进程编号始终为1).其他所有进程都是init进程的子孙.init进程是不可杀死的.不够貌似init进程的作用正在被逐渐弱化.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-06 21:59:37

shell学习五十二天----删除进程kill命令的相关文章

bash shell学习笔记(一)—— 常用命令

一.基本的bash shell命令 1.默认bash shell 提示符是美元符号($); 2.bash手册 使用man命令来访问存储在Linux系统上的手册页面,如: bogon:~ Mac$ man kill KILL(1)                   BSD General Commands Manual                  KILL(1) NAME kill -- terminate or signal a process SYNOPSIS kill [-s sig

第八章 shell学习之循环和结构化命令

for循环 1. 列表for循环 for variable in {list}  #有些像C++/CLR中的for each do ... done 如: 1. [[email protected] tmp]# cat b.sh #! /bin/bash for i in 1 2 3 4 5      #1 2 3 4 5等价于{1..5} do echo $i done [[email protected] tmp]# ./b.sh 1 2 3 4 5 2. [[email protected

shell学习五十天----查看进程ps命令

进程列表 列出进程中最重要的命令便是进程状态命令:ps. ps命令是进程状态(Process Status)的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令. 要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态,进程是否结束,进程有没有僵尸,哪些进

shell学习五十一天----top命令查看进程列表

top命令查看进程列表 top命令是linux下常用的性能分析工具,能实时显示系统中各个进程的资源占用状况.和win的资源管理器类似.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态,如果在前台执行该命令,它将独占前台,知道用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用,内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互命令或者在个人定制文件中进行设定. t

shell学习五十六天----延迟进程调度

延迟进程调度 前言:大部分时候,我们都希望进程快点開始,开点结束,别卡.而shell的运行,也是在前一个命令后,立即接着运行下一个命令.命令完毕的速度是与资源的限制有关,且不在shell的权限下. 在交谈模式中使用下,有时不必等到命令完毕才干运行还有一个.这是shell提供的一个简单方式:全部的命令仅仅要在最后加上&字符,都可起始于后台运行,无需等待.仅仅有在少数情况下,必须等待后台进程完毕. 稍稍有四种情况须要延时进程事实上,知道未来的某个事件才运行. 第一种 sleep sleep命令经常使

shell学习四十九天----进程建立

进程 前言:进程指的是运行中程序的一个实例.新进程由fork()与execve()等系统调用所起始,然后运行,知道他们下达exit()系统调用为止. linux系统都支持多进程.尽管计算机看起来像是一次做了非常多事,但除非是他拥有多个CPU,否则一次做了好多事仅仅是个错觉.其实,每一个进程仅容许在一个极短的期间运行,我们称为时间片段,之后进程会先临时搁置,让其它等待中进程运行.时间片段极短,通常仅仅有几微妙,所以人们非常少感觉到进程将控制权交回内核,再交给还有一个进程的这样的文本切换.进程本身不

shell学习五十四天----进程系统调用的追踪strace

strace 前言:strace常用来跟踪进程执行时的系统调用的所接受的信号.在linux世界,进程是不能直接访问硬件设备,当进程需要访问硬件(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备.strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间,有其在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你想知道程序和操作系统是如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执

shell学习五十八天----/proc文件系统

/proc文件系统 前言:linux中的/proc文件系统,由一组目录和文件组成,挂载(mount)与/proc目录下. /proc文件系统是一种虚拟文件系统,以文件系统目录和文件形式,提供一个指向内核数据结构的接口.这为查看和改变各种系统属性开启了方便之门.此外,还能通过一组以/proc/PID形式命名的目录(PID是进程的ID)查看系统汇总运行各进程的相关信息. 通常,/proc目录下的文件内容都采取可读的文本形式,shell脚本也能对其进行解析.程序可以打开,读取和写入/proc目录下的既

Shell 脚本添加或删除用户及命令使用方法

Shell 要求:写一个脚本 一.添加10个用户user1到user10,密码同用户名,,若用户存在,但要求只有用户不存在的情况下才能添加,格式为/useradd.sh 解答思路:1.使用for 循环语句添加用户 user1 到user 10 2.判断用户是否存在,若存在,则echo 用户已存在 ,若不存在,添加用户 ,并设置密码与用户名相同 . 脚本: vim useradd.sh  并赋予+x权限. #!/bin/bash # for I in{1..10};do      if id us