1.获得pid


方法一 :


$ ps -ef 

$ ps -aux


方法二 :


pgrep:(pgrep -l 更好)

一看到pgrep首先会想到什么?没错,grep!pgrep的p表明了这个命令是专门用于进程查询的grep。

$ pgrep firefox

1827

看到了什么?没错火狐的PID,接下来又要打字了:

$kill -s 9 1827




2.杀掉进程




pkill:


看到pkill想到了什么?没错pgrep和kill!pkill=pgrep+kill。


$pkill -9 firefox


说明:"-9" 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。




killall:


killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。


$killall -9 firefox




格式:kill -l


列出所有信号名称(Print a list of signal names.  These are found in /usr/include/linux/signal.h)。只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。下面是常用的信号:


HUP     1    终端断线


INT       2    中断(同 Ctrl + C)


QUIT    3    退出(同 Ctrl + \)


TERM    15    终止


KILL      9    强制终止


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


STOP    19    暂停(同 Ctrl + Z)


格式:kill -l <signame>


显示指定信号的数值。




格式:kill -9 <pid>


格式:kill -KILL <pid>


强制杀掉指定进程,无条件终止指定进程。


 


格式:kill %<jobid>


格式:kill -9 %<jobid>


杀掉指定的任务(使用jobs命令可以列出)


 


格式:kill -QUIT <pid>


格式:kill -3 <pid>


使得程序正常的退出。 




3. 任务jobs 挂起,终止


jobs命令用于显示当前终端关联的后台任务情况。


命令后面跟上& 用于将命令在后台执行。


Ctrl+Z用于将当前正在运行的前台进程暂停,变成后台进程。


bg [%n]用于将后台暂停的进程继续运行。


fg  [%n]用于将后台执行的进程变成前台进程。


kill %n用于杀掉指定的任务。




fg、bg、jobs、&、ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的


一。& 最经常被用到


   这个用在一个命令的最后,可以把这个命令放到后台执行


二。ctrl + z


     可以将一个正在前台执行的命令放到后台,并且暂停


三。jobs


     查看当前有多少在后台运行的命令


四。fg


     将后台中的命令调至前台继续运行


   如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)


五。bg


     将一个在后台暂停的命令,变成继续执行


   如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid) 




下列命令可以用来操纵进程任务:


  ps 列出系统中正在运行的进程;


  kill 发送信号给一个或多个进程(经常用来杀死一个进程);


  jobs 列出当前shell环境中已启动的任务状态,若未指定jobsid,则显示所有活动的任务状态信息;如果报告了一个任务的终止(即任务的状态被标记为Terminated),shell 从当前的shell环境已知的列表中删除任务的进程标识;


  bg 将进程搬到后台运行(Background);


  fg 将进程搬到前台运行(Foreground); 




  将job转移到后台运行 


  如果你经常在X图形下工作,你可能有这样的经历:通过终端命令运行一个GUI程序,GUI界面出来了,但是你的终端还停留在原地,你不能在shell中继续执行其他命令了,除非将GUI程序关掉。 




  为了使程序执行后终端还能继续接受命令,你可以将进程移到后台运行,使用如下命令运行程序: #假设要运行xmms


  $xmms &




  这样打开xmms后,终端的提示又回来了。现在xmms在后台运行着呢;但万一你运行程序时忘记使用“&”了,又不想重新执行;你可以先使用ctrl+z挂起程序,然后敲入bg命令,这样程序就在后台继续运行了。




  概念:当前任务 




  如果后台的任务号有2个,[1],[2];如果当第一个后台任务顺利执行完毕,第二个后台任务还在执行中时,当前任务便会自动变成后台任务号码“[2]”的后台任务。所以可以得出一点,即当前任务是会变动的。当用户输入“fg”、“bg”和“stop”等命令时,如果不加任何引号,则所变动的均是当前任务。




  察看jobs 


  使用jobs或ps命令可以察看正在执行的jobs。 




  jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息;




  进程的挂起 




  后台进程的挂起: 


  在solaris中通过stop命令执行,通过jobs命令查看job号(假设为num),然后执行stop %num;


  在redhat中,不存在stop命令,可通过执行命令kill -stop PID,将进程挂起;




  当要重新执行当前被挂起的任务时,通过bg %num 即可将挂起的job的状态由stopped改为running,仍在后台执行;当需要改为在前台执行时,执行命令fg %num即可;




  前台进程的挂起:


  ctrl+z;




  进程的终止 




  后台进程的终止:


  方法一:



  方法二:



  前台进程的终止:


  ctrl+c




  kill的其他作用 


  kill除了可以终止进程,还能给进程发送其它信号,使用kill -l 可以察看kill支持的信号。