Chinaunix首页 | 论坛 | 博客
  • 博客访问: 623440
  • 博文数量: 329
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 693
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-05 23:37
个人简介

Do not panic!

文章存档

2021年(1)

2018年(3)

2017年(7)

2016年(98)

2015年(220)

我的朋友

分类:

2015-09-17 08:35:10

原文地址:kill命令详解 作者:poplar.xu

DESCRIPTION
       The  command  kill  sends the specified signal to the specified process or process group.  If no signal is specified, the TERM signal is  sent.   The TERM signal will kill processes which do not catch this signal.  For other
processes, it may be necessary to use the KILL (9) signal, since this sig-nal cannot be caught.
 
       Most modern shells have a builtin kill function, with a usage rather simi-lar to that of the command described here. The ‘-a’ and ‘-p’ options,  and  the possibility to specify pids by command name is a local extension.

翻译:kill命令发送指定的信号给指定的进程或进程组。如果没有指定信号,则发送TERM信号。
TERM信号将杀死没有扑捉到这个信号的进程。对于其他的进程来说,使用kill 9 信号是必要的,因为kill 9信号不能被捉住。

大多数shell有内建的kill功能。这些内建的kill功能和我们此处介绍的kill功能类似。都有-a和-p选项。以及其他一些类似于kill命令下达的指令。



# 管理背景当中的工作: kill

  刚刚我们可以让一个已经在背景当中的工作继续工作,也可以让该工作以 fg 拿到前景来, 那么,如果想要将该工作直接移除呢?或者是将该工作重新启动呢?呵呵! 这个时候就得需要给予该工作一个讯号 (signal) ,让他知道该怎么作才好啊! 此时, kill 这个指令就派上用场啦!

  [root@linux ~]# kill -signal %jobnumber
  [root@linux ~]# kill -l
  参数:
  -l  :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?共有62个信号。
  signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
  -1 :重新读取一次参数的设定档 (类似 reload);
  -2 :代表与由键盘输入 [ctrl]-c 同样的动作;
  -9 :立刻强制删除一个工作;
  -15:以正常的程序方式终止一项工作。与 -9 是不一样的。
  范例:

  范例一:找出目前的 bash 环境下的背景工作,并将该工作删除。
  [root@linux ~]# jobs
  [1]+  Stopped                 vim bashrc
  [root@linux ~]# kill -9 %1
  [1]+  已砍掉                  vim bashrc

  范例:找出目前的 bash 环境下的背景工作,并将该工作终止掉。
  [root@linux ~]# jobs
  [1]+  Stopped                 vim bashrc
  [root@linux ~]# kill -SIGTERM %1
  [1]+  终止                    vim bashrc
  # -SIGTERM 与 -15 是一样的!您可以使用 kill -l 来查阅!

  特别留意一下, -9 这个 signal 通常是用在‘强制删除一个不正常的工作’时所使用的, -15 则是以正常步骤结束一项工作(15也是预设值),两者之间并不相同呦!举上面的例子来说, 我用 vi 的时候,不是会产生一个 .filename.swp 的档案吗? 那么,当使用 -15 这个 signal 时, vi 会尝试以正常的步骤来结束掉该 vi 的工作, 所以 .filename.swp 会主动的被移除,但若是使用 -9 这个 signal 时, 由于该 vi 工作会被强制移除掉,因此, .filename.swp 就会继续存在档案系统当中。 这样您应该可以稍微分辨一下了吧?

  其实, kill 的妙用是很无穷的啦!他搭配 signal 所详列的资讯 (用 man 7 signal 去查阅相关资料) 可以让您有效的管理工作与程序 (Process),此外,那个 killall 也是同样的用法! 至于常用的 signal 您至少需要瞭解 1, 9, 15 这三个 signal 的意义才好。 此外, signal 除了以数值来表示之外,也可以使用讯号名称喔! 举例来说,上面的范例二就是一个例子啦!至于 signal number 与名称的对应, 呵呵,使用 kill -l 就知道啦(L的小写)!
阅读(596) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~