Linux中Kill进程的N种方法(2)

其中awk '{print $2}' 的作用就是打印(print)出第二列的内容。根据常规篇,可以知道ps输出的第二列正好是PID。就把进程相应的PID通过xargs传递给kill作参数,杀掉对应的进程。

改进7

难道每次都要调用xargs把PID传递给kill?答案是否定的:

$kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`

改进8:

没错,命令依然有点长,换成pgrep。

$kill -s 9 `pgrep firefox`

改进9——pkill:

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

$pkill -9 firefox

说明:"-9" 即发送的信号是9,pkill与kill在这点的差别是:pkill无须 “s”,终止信号等级直接跟在 “-“ 后面。之前我一直以为是 "-s 9",结果每次运行都无法终止进程。

改进10——killall

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

$killall -9 firefox


附录:各种信号及其用途

Signal Description Signal number on Linux x86[1]
SIGABRT   Process aborted   6  
SIGALRM   Signal raised by alarm   14  
SIGBUS   Bus error: "access to undefined portion of memory object"   7  
SIGCHLD   Child process terminated, stopped (or continued*)   17  
SIGCONT   Continue if stopped   18  
SIGFPE   Floating point exception: "erroneous arithmetic operation"   8  
SIGHUP   Hangup   1  
SIGILL   Illegal instruction   4  
SIGINT   Interrupt   2  
SIGKILL   Kill (terminate immediately)   9  
SIGPIPE   Write to pipe with no one reading   13  
SIGQUIT   Quit and dump core   3  
SIGSEGV   Segmentation violation   11  
SIGSTOP   Stop executing temporarily   19  
SIGTERM   Termination (request to terminate)   15  
SIGTSTP   Terminal stop signal   20  
SIGTTIN   Background process attempting to read from tty ("in")   21  
SIGTTOU   Background process attempting to write to tty ("out")   22  
SIGUSR1   User-defined 1   10  
SIGUSR2   User-defined 2   12  
SIGPOLL   Pollable event   29  
SIGPROF   Profiling timer expired   27  
SIGSYS   Bad syscall   31  
SIGTRAP   Trace/breakpoint trap   5  
SIGURG   Urgent data available on socket   23  
SIGVTALRM   Signal raised by timer counting virtual time: "virtual timer expired"   26  
SIGXCPU   CPU time limit exceeded   24  
SIGXFSZ   File size limit exceeded   25  

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/23646.html