2015-11-06 105 views
0

我一直在试图找到并杀死在Linux机器上的ksh脚本中停止后留下的任何陈旧进程,它似乎无法正常工作。它的命令行,但在剧本虽然找到并杀死ksh脚本(linux)中的进程无法正常工作

这里是代码

echo "kill any process still running" 
ps -ef | grep qpasa |grep -v grep | awk '{print $2}' |xargs kill 

作品,这里是从脚本日志输出

usage: kill [ -s signal | -p ] [ -a ] pid ... 
     kill -l [ signal ] 

你能请你让我知道什么我在这里做错了吗

+0

什么是同一个命令的输出没有最后“杀命令”? “ps -ef | grep qpasa | grep -v grep | awk'{print $ 2}'” – nabeel

回答

1

我想你在没有进程运行时调用脚本。尝试kill没有参数,你会得到相同的消息。
您可以将错误重定向到/dev/null,但我会尝试别的东西:

ps -ef | grep qpasa |grep -v grep | awk '{print $2}' | while read pid; do 
    echo "Killing ${pid}" 
    kill ${pid} 
    sleep 2 
    kill -9 ${pid} 2>/dev/null 
done 

第一killqpasa的可能性,停止控制:刷新缓存和关闭句柄。给它qpasa 2秒。
qpasa忽略信号时,kill它是困难的方式。当然,这个过程可能已经停止了,所以这次我们想忽略错误信息。

当你有很多qpasa进程时,你只想睡2秒一次。
首先通过友好杀死所有进程循环,等待5秒钟,然后杀死你发现的进程。当你的循环(与使用$ 1中删除信号)的功能kill_qpasa_signal,您可以使用

kill_qpasa_signal 15 
sleep 5 
kill_qpasa_signal 9