我正在寻找一个将找到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脚本?
如何使用给定的部分名称杀死所有进程的可能重复项?
killall java
或更笼统地说:
killall
有时我的进程名称相同,但命令行参数不同。要杀死此类进程或任何任意进程而不必键入ps然后杀死pid,我可以这样做:
ps aux | grep | awk '{print $2}' | xargs kill
哪里
是要在ps aux中搜索的任何短语
命令的输出。
awk '{print $2}'仅过滤第二个
列,它是PID的列表
kill将在每个
这些PID。
编辑:正如三位一体指出的那样,除非绝对需要,否则在进程中强制使用kill -9是个坏主意。因此,从上述命令中删除了-9部分
grep a | awk {b}反模式可以简化为awk a{b}。 另请参阅partmaps.org/era/unix/award.html,它另外建议不要使用kill -9,除非您真的非常了解自己在做什么。
我认为pkill -9 java是最简单的方法。 pkill将使用grep查找匹配的进程名称。
参见手册页:http://linux.die.net/man/1/pkill
尝试这个:
kill -9 `pidof java`
[cosmos @ afisvr2:/ data / cosmos / sim / bin]杀死-9 pidof com.sds.afi.rte.cosmos-1.0.0.jar -bash:杀死:pidof com.sds.afi.rte.cosmos-1.0 .0.jar:参数必须是进程或作业ID
它没有工作。
在将其置于监视模式下并通过以下几行后,我制作了一个.sh来重新启动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
您可以在外壳程序脚本中包含以下命令,该命令将终止" com.sds.afi.rte.cosmos-1.0.0.jar"的进程ID。
杀死-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"
干杯,
苏拉杰
我发现nikeairj提到的pkill / pgrep命令(如果可用)是最佳选择。
我还使用了以下内容,这些内容也可能在没有awk或其他可能不可用的命令的Linux / Unix操作系统中工作(我记得在某些AIX或HP-UX环境中无法使用awk)
# 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"{}"
除了ErJab提供的解决方案之外,我还创建了一个shell脚本killall来模仿" killall"行为:
#!/bin/sh
ps | grep $1 | awk '{print $1}' | xargs kill -9
我放在/ bin目录中(当然是chmod + x之后)
n