知道一个程序正在运行,不知道运行程序的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}' ),可以杀掉同名进程名的多个进程。