使用shell脚本自动终止进程

时间:2012-07-09 05:35:09

标签: linux shell

我正在寻找一个可以找到PID的命令,如:

ps -ef | grep com.sds.afi.rte.cosmos-1.0.0.jar
cosmos    4690  4689  3 14:27 pts/8    00:00:06 java -Dlog4j.debug -Dlog4j.configuration=file:/data/cosmos/sim/bin/log4j.xml -jar com.sds.afi.rte.cosmos-1.0.0.jar
cosmos    5484  5482  0 14:30 pts/11   00:00:00 grep com.sds.afi.rte.cosmos-1.0.0.jar

然后使用以下方法终止这些进程:

kill -9 pid

如何制作一个自动完成上述所有操作的shell脚本?

7 个答案:

答案 0 :(得分:9)

killall java

或者更一般地说:

killall <processname>

有时我的进程名称相同,但命令行参数不同。要杀死这些进程或任何进程而不必键入ps然后杀死pid,我这样做:

ps aux | grep <something> | awk '{print $2}' | xargs kill

,其中

  • <something>是您要在ps aux中搜索的任何短语 命令的输出。
  • awk '{print $2}'只过滤掉第二个 列,这是一个PID列表
  • 每个人都会调用
  • kill 那些PID。

编辑:正如三人指出的那样,除非绝对需要,否则在进程上抨击kill -9是个坏主意。因此从上面的命令中删除了-9部分

答案 1 :(得分:2)

我认为pkill -9 java是最简单的方法。 pkill将使用grep查找匹配的进程名称。

请参阅手册页:http://linux.die.net/man/1/pkill

答案 2 :(得分:1)

试试这个:

kill -9 `pidof java`

答案 3 :(得分:0)

除了提供的解决方案ErJab之外,我创建了一个shell脚本killall来模仿'killall'行为:

#!/bin/sh
ps | grep $1 | awk '{print $1}' | xargs kill -9

我放在/ bin目录中(当然是在chmod + x之后)

答案 4 :(得分:0)

我发现pkill提到的 pgrep / nikeairj 命令是可行的最佳选择。 我还使用了以下内容,它们也适用于Linux / Unix操作系统没有awk或其他可能不可用的命令(我记得在某些中无法使用awk AIX HP-UX 环境)

# subsitute myMatch with your process cmdline match, e.g. "firefox", "firefox -P"
# or anything output by "ps -ef"
ps -ef|grep myMatch|grep -v grep|sed -e "s/^[^0-9]\+\([0-9]\+\)\s.\+$/\1/"|xargs kill "{}"

答案 5 :(得分:0)

您可以在shell脚本中包含以下命令,该命令将终止“com.sds.afi.rte.cosmos-1.0.0.jar”的进程ID

kill -9 ps aux | grep com.sds.afi.rte.cosmos-1.0.0.jar | grep -v grep | awk '{print \$2}'

确保使用倒置(``)逗号进行上面使用的pid搜索。

如果要从expect命令执行上述命令,则可以使用以下命令:

期待“$”

发送“kill -9 ps aux | grep com.sds.afi.rte.cosmos-1.0.0.jar | grep -v grep | awk '{print \$2}' \ r”

干杯, 苏拉杰

答案 6 :(得分:0)

我使用以下几行将其设置为监控模式后,重新启动了我的Wifi。

#Display PID

echo "Killing network PID'S"

ps aux | grep wpa_supplicant | awk '{print $2}' | xargs kill



ps aux | grep NetworkManager | awk '{print $2}' | xargs kill

#Restart NetworkManager && wpa_supplicant

echo "Restarting NetworkManager && wpa_supplicant"

service NetworkManager restart && service wpa_supplicant restart