终端运用程序名关闭正在运行的程序

知道一个程序正在运行,不知道运行程序的pid,只知道程序名,写一个脚本,关闭它。

假设程序为while1,编写脚本。

kill -9 $(ps -ef|grep while1|awk '{print $2}')


运行终端显示为:

root@ubuntu:~/Desktop# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  2600     1  0  80   0 -   478 wait   pts/1    00:00:00 mysqld_safe
4 S   999  2703  2600  0  80   0 - 185476 poll_s pts/1   00:00:36 mysqld
0 S     0  7314  7294  0  80   0 -   864 poll_s pts/4    00:00:00 telnet
0 R     0  7920  7397 99  80   0 -   431 -      pts/5    00:00:07 while1
4 R     0  7924  7554  0  80   0 -  1194 -      pts/6    00:00:00 ps
root@ubuntu:~/Desktop# kill -9 $(ps -ef|grep while1|awk '{print $2}')
bash: kill: (7927) - No such process
root@ubuntu:~/Desktop# ps -al
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0  2600     1  0  80   0 -   478 wait   pts/1    00:00:00 mysqld_safe
4 S   999  2703  2600  0  80   0 - 185476 poll_s pts/1   00:00:36 mysqld
0 S     0  7314  7294  0  80   0 -   864 poll_s pts/4    00:00:00 telnet
4 R     0  7929  7554  0  80   0 -  1194 -      pts/6    00:00:00 ps
root@ubuntu:~/Desktop# 


解释:

1.通过进程名取得进程号:
ps -ef|grep udpserver |awk '{print $2}' 
结果:返回两个进程,其中一个为grep的进程。
//2.在增加过滤条件
//ps -ef|grep udpserver | grep java |awk '{print $2}' 
//结果:返回一个进程,为udpserver的进程。(可根据需要在增加多个过滤条件)
4.awk
awk...命令是打印列,也就是ps -e命令输出的pid列,$2为指定列。
4.删除进程号
kill -9
//注:使用kill -9 $(ps -ef|grep udpserver | grep java|awk '{print $2}' ),可以杀掉同名进程名的多个进程。


你可能感兴趣的:(终端运用程序名关闭正在运行的程序)