培养自己的见解、培养思维

linux命令学习----kill命令详解(转)

上一篇 / 下一篇  2011-03-09 15:32:23 / 个人分类:Linux基础及进阶

kill
1.作用:kill命令用来中止一个进程。
2.格式
    kill [ -s signal | -p ] [ -a ] pid ...
    kill -l [ signal ]
3.参数
   -s:指定发送的信号。
   -p:模拟发送信号。
   -l:指定信号的名称列表。
   pid:要中止进程的ID号。
   Signal:表示信号。
4.说明
   进程是Linux系统中一个非常重要的概念。Linux是个多任务的操作系统,系统上经常同时运行着多个进程。我们不关心这些进程究竟是怎么分配的,或是内核怎么管理分配时间片的,所关心的是怎么去控制这些进程,让他们能够非常好地为用户服务。
   Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。交互进
程是由一个Shell启动的进程。交互进程既能在前台运行,也能在后台运行。批处理进程和终端没有联系,是个进程式列。监视进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行。例如,httpd是著名的Apache服务器的监视进程。kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识号,然后系统内核就能对进程标识号指定的进程进行操作。比如在top命令中,我们看到系统运行许多进程,有时就需要使用kill中止某些进程来提高系统资源。在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程式出错造成系统死锁时,能转换到其他虚拟控制台工作关闭这个程序。此时使用的命令就是kill,因为kill是大多数Shell内部命令能直接调用的。
5.应用实例
   (1)强行中止(经常使用杀掉)一个进程标识号为324的进程:
        #kill -9 324
   (2)解除Linux系统的死锁
       在Linux中有时会发生这样一种情况:一个程式崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或说是关闭)这个有问题的程式即可。当kill处于X-Window界面时,主要的程式(除了崩溃的程式之外)一般都已正常启动了。此时打开一个终端,在那里中止有问题的程式。比如,如果Mozilla浏览器程式出现了锁死的情况,能使用kill命令来中止所有包含有Mozolla浏览器的程式。首先用top命令查处该程式的PID,然后使用kill命令停止这个程式:
        #kill -SIGKILL XXX
        其中,XXX是包含有Mozolla浏览器的程式的进程标识号。
   (3)使用命令回收内存
       我们知道内存对于系统是非常重要的,回收内存能提高系统资源。kill命令能及时地中止一些“越轨”的程式或非常长时间没有相应的程式。例如,使用top命令发现一个无用 (Zombie) 的进程,此时能使用下面命令:
        #kill -9 XXX
        其中,XXX是无用的进程标识号。
        然后使用下面命令:
        #free
        此时会发现可用内存容量增加了。
   (4)killall命令
       Linux下还提供了一个killall命令,能直接使用进程的名字而不是进程标识号,例如:
       # killall -HUP inetd

crontab
1.作用
    使用crontab命令能修改crontab设置文件,然后该设置由cron公用程式在适当的时间执行,该命令使用权限是所有用户。
2.格式
    crontab [ -u user ]  文件 
    crontab [ -u user ] { -l | -r | -e }
3.主要参数
    -e:执行文字编辑器来设定时程表,内定的文字编辑器是vi。
    -r:删除目前的时程表。
    -l:列出目前的时程表。
crontab文件的格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。cmd表示要运行的程式,他被送入sh执行,这个Shell只有USER、HOME、SHELL三个环境变量。
4.说明
    和at命令相比,crontab命令适合完成固定周期的任务。
5.应用实例
    设置一个定时、定期的系统提示:
    [cao @www cao]#crontab -e
此时系统会打开一个vi编辑器。
如果输入以下内容:35 17 * * 5 wall "Tomorrow is Saturday I will go CS",然后存盘退出。这时在/var/spool/cron/目录下会生产一个cao的文件,内容如下:
   
    # DO NOT EDIT THIS FILE - edit the master and reinstall.
    # (/tmp/crontab.2707 installed on Thu Jan  1 22:01:51 2004)
    # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
35 17 * * 5 wall "Tomorrow is Saturday I will play CS "
   
  
这样每个星期五17:35系统就会弹出一个终端,提醒星期六能打打CS了!显示结果见图3所示。

图3  一个定时、定期的系统提示


动手练习
1.联合使用kill和top命令观察系统性能的变化
   首先启动一个终端运行top命令,然后再启动一个终端使用kill命令,见图4所示。

图4  观察kill命令对top终端的影响
这时利用上面介绍的kill命令来中止一些程式:
     #kill SIGKILL XXX
     然后再看top命令终端的变化,包括内存容量、CPU使用率、系统负载等。注意,有些进程是不能中止的,不过学习Linux命令时能试试,看看系统有什么反应。
2.使用at和halt命令定时关机
    首先设定关机时间是17:35,输入下面代码:
   
    #at 17:35
warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh
at>halt `-i -p
at>
job 6 at 2004-01-01 17:35
   
  
此时实际上就已进入Linux系统的Shell,并且编写一个最简单程式:halt -i -p。上面Shell中的文本结束符号表示按“Ctrl+D”组合键关闭命令,提交任务退出Shell。“Job  6  at 2004-01-01 17:35”表示系统接受第6个at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止,关闭系统后关闭电源。
3.用crontab命令实现每天定时的病毒扫描
   前面已介绍了一个简单的crontab命令操作,这里看一些更重要的操作。
   (1)建立一个文件,文件名称自己设定,假设为caoproject:
       #crontab -e
   (2)文件内容如下:
      05 09 * * * antivir
     用vi编辑后存盘退出。antivir是个查杀Linux病毒的软件,当然需要时先安装在系统中。
   (3)使用crontab命令添加到任务列表中:
       #crontab caoproject
    这样系统内所有用户在每天的9点05分会自动进行病毒扫描。
4.用kill使修改的设置文件马上生效
   视窗系统用户一般都知道,重要设置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由于采用了模块化设计,能自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧。
    inetd是个监听守护进程,监听和提供互连网服务进程(如rlogin、telnet、ftp、rsh) 进行连接的需求,并扩展所需的服务进程。默认情况下,inetd监听的这些daemon均列于/etc/inetd.conf文件中。编辑/etc/inetd.conf文件,能改动inetd启动服务器守护进程的选项,然后驱使inetd以SIGHUP(signal 1)向当前的inetd进程发送信号,使inetd重读该文件。这一过程由kill命令来实现。
用vi或其他编辑器修改inetd.conf后,首先使用下面命令:
       #ps -ef |grep inetd
上面代码表明查询inetd.conf的进程号(PID),这里假设是1426,然后使用下面命令:
       # kill -1426 inetd
这样设置文件就生效了。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar