Linux中五个你可能不了解的killall选项

糖豆贴心提醒,本文阅读时间8分钟

引言

Linux的命令行提供很多命令来杀死进程。

比如,你可以向“kill”命令传递一个PID来杀死进程;“pkill”命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死。

但是还有一个命令叫“killall”,默认情况下,它精确地匹配参数名,然后杀死匹配进程。

在这篇文章中,我们将讨论有关这个命令的实际应用。

Linux 的 killall 命令

killall命令可以用来给一个特定的进程发送一个信号。

这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。

现在让我们通过一些实际的例子来看看这个命令的实际用法。

1. 基本示例

在这个例子中,我们将使用killall来杀死特定进程。

假如有两个开头字符相同的进程:

如何杀死“test_again”进程呢?

如你所见,killall命令终止了“test_again”进程。你可以通过ps命令来确认这个事实:

你可以观察到“test_again”没有被显示出来,因为它已经被杀死了。

2. 使用 -I 选项忽略大小写

默认情况下,killall命令是大小写敏感的。例如:

你可以看到,killall命令找不到叫做“TEST”的进程,但是“test”进程是确确实实的在运行的。

来让killall命令忽略大小写,可以使用-I选项(大写i)。例如:

你可以观察到,现在你成功的终止了“test”进程。

3. 使用 -i 选项交互式的终止进程

killall命令可以用来终止多个进程。

但是,如果你想要killall交互式地来终止进程,你可以使用-i选项。

这里是例子:

你可以看到,用这种方式,在同时终止多个进程时,用户可以控制是否终止某一个进程。

4. 使用 -q 选项关闭命令执行回显

有些时候,当killall找不到指定的进程时,它就会像下面这样输出错误信息。

但是,当你想要killall执行地安安静静的话,你就可以使用-q选项:

如你所见,-q选项被使用之后,killall命令的输出信息就被抑制了。

5. 使用-l选项列出所有支持的信号(signal)

如之前描述的一样,killall向进程发送信号。

你可以使用-s选项(后面跟一个信号名)来向一个进程发送特殊信号。

想要知道所有可以发送的信号,可以使用-l选项(小写L)来获取:

killall支持上面的所有信号。

那这些信号都是干什么的?

你可以使用下面的命令来获取所有信号的说明:

$ man 7 signal

一个有趣的小问题

killall命令的man说:假如进程的名字的长度小于等于15,默认情况下就会以完整名称匹配。

假设有两个名字很长的进程:

第一个进程的名字有15个字符。现在,让我们试着使用killall杀死这个进程:

如你所见,killall命令成功杀死了这个进程。

假如,两个进程的名字都超过15个字符,根据man,killall将把两个进程全部杀死。比如:

你可以观察到,两个进程的名字都超过15个字符。现在,当我使用killall试着杀死第二个进程时:

它只杀死了指定的进程,另一个则没有被杀死。

小编实验说用的killall命令版本信息如下:,

你能猜到这个问题出现的原因吗?欢迎在评论区留言哦~


原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-03-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐百川的学习频道

安装和使用MongoDB

MongoDB是一个著名的NoSQL数据库,顾名思义就是不使用SQL的数据库,目前在很多场景都有使用。如果你不喜欢使用笨拙的各种SQL数据库,可以尝试使用一下M...

1.1K60
来自专栏北京马哥教育

Varnish 4.0 实战

简介 Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 squid 相比,v...

44740
来自专栏游戏杂谈

Node + Express + Mysql的CMS小结

因为之前用过上述的组合完成过很多系统,而这一次是为了实现一个帮助系统的静态网页发布。因为很久不写,重点说遇到的几个坑:

13920
来自专栏Hongten

Android开发-环境搭建-01

1.1、由于Android是基于java语言的。所以在开发过程中,首先要做的事儿就是安装JDK。

32630
来自专栏老付的网络博客

IIS执行原理

HTTP.SYS是TCP之上的一个网络驱动程序,因此,HTTP.SYS不再属于IIS(这里说的IIS都是IIS6.0+版本,下文如果不特殊指明,默认为IIS6....

17920
来自专栏cloudskyme

开源权限系统sshpermissions

第一章 引言 1.1 编写目的 使用easyui+ssh2+shiro的权限管理系统,粒度可细化到按钮及菜单级别。目前是第一个稳定版本,可实现基本的权限控制功能...

45180
来自专栏惨绿少年

rsync 服务部署详解

第1章 rsync 软件介绍 1.1 什么是rsync rsync 是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。 ht...

50600
来自专栏虚拟化云计算

guestfs这么强大你知道吗

libguestfs 是Redhat开源的一组工具集,主要用来访问和修改虚拟机的磁盘。其功能非常强大,我们常用的监控虚拟机磁盘使用率、P2V、V2V、备份克隆虚...

44750
来自专栏Java技术分享

3.Linux用户权限管理之三(文件与权限的设定)

用户权限管理之三(文件与权限的设定) 所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行等,在linux下,每个用户都具有不同的权限,普通用户...

195100
来自专栏Java技术分享

Linux用户权限管理之三(文件与权限的设定)

所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行等,在linux下,每个用户都具有不同的权限,普通用户只能在自己的主目录下进行写操作,而在主...

22880

扫码关注云+社区

领取腾讯云代金券