linux结束当前脚本进程,关于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脚本?

如何使用给定的部分名称杀死所有进程的可能重复项?

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值