kill命令

来源:互联网 发布:数据库实例不可用 编辑:程序博客网 时间:2024/04/29 16:18
1) SIGINT 程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出
2) SIGKILL 用来立即结束程序的运行. 本信号不能被阻塞, 处理和忽略. 
3) SIGTERM 程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和 
处理. 通常用来要求程序自己正常退出. shell命令kill缺省产生这 
个信号. 




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的小写)!
0 0
原创粉丝点击