在Linux中使用bash脚本捕获tomcat的pid以杀死

在Linux中使用bash脚本捕获tomcat的pid以杀死,linux,bash,shell,tomcat,putty,Linux,Bash,Shell,Tomcat,Putty,我试图编写一个bash脚本,找到tomcat6的PID,终止它,再次启动它,然后等待1分钟,然后再次终止进程并再次启动它 这就是我到目前为止所拥有的,但我正在努力让脚本使用之前的pid杀死tomcat: ps aux | grep tomcat6 kill -9 $! service Tomcat6 start sleep 1m ps aux | grep tomcat6 kill -9 $! service Tomcat6 start 谢谢您可以使用 pkill tomcat6 只做一次就

我试图编写一个bash脚本,找到tomcat6的
PID
,终止它,再次启动它,然后等待1分钟,然后再次终止进程并再次启动它

这就是我到目前为止所拥有的,但我正在努力让脚本使用之前的pid杀死tomcat:

ps aux | grep tomcat6
kill -9 $!
service Tomcat6 start
sleep 1m
ps aux | grep tomcat6
kill -9 $!
service Tomcat6 start
谢谢

您可以使用

pkill tomcat6

只做一次就足够了(如果你需要sudo)

甚至更好

 sudo /bin/bash -c "service tomcat6 restart; sleep 1m; service tomcat6 restart;"

这可能是一个永无止境的循环,你必须用手打断它。 像擦伤一样接受它

#!/bin/bash
while :
do  
    pkill tomcat6  # or pkill -9 tomcat6 
    service tomcat6 start
    sleep 1m
done
如果我记得清楚的话,就有可能重新启动该服务。 如果是这样,你甚至可以使用

#!/bin/bash
while :
do  
    service tomcat6 restart
    sleep 1m
done

如果grep给出多个输出,NR==x将只得到所需线路的PID。

我不希望它是一个永无止境的循环,它还说它不识别Tomcat6服务。可能是
Tomcat6
而不是
Tomcat6
?我真的很感谢您的努力。但是我不能使用restart,因为它不能正常工作(tomcat6),所以我需要使用kill然后start。我的问题是,当我执行“ps aux | grep tomcat6”时,它会显示2个pid,因此我需要脚本中的下一行来终止这两个进程。有什么建议吗?这就是为什么我把我的基本代码放在这里,我觉得它在对任务进行伪编码方面做得更好。谢谢。你有
pgrep
吗?我不知道那是什么。我不是很懂linux
$在这里不合适,因为1)您没有在后台启动任何东西,因此它可能有空的倾向;2)即使它不是空的,它也不会神奇地包含来自上一个命令输出的特定字段的值。这就是我得到的:kill:用法:kill[-s sigspec |-n signum |-sigspec]pid |作业规范。。。或者杀死-l[sigspec]我真的很感谢你的努力,真的。但是我不能使用restart,因为它不能正常工作(tomcat6),所以我需要使用kill然后start。我的问题是,当我执行“ps aux | grep tomcat6”时,它会显示2个pid,因此我需要脚本中的下一行来终止这两个进程。有什么建议吗?这就是为什么我把我的基本代码放在这里,我觉得它在对任务进行伪编码方面做得更好。Thanks@user3752761当您尝试
pkill tomcat6
时发生了什么?
#!/bin/bash
while :
do  
    service tomcat6 restart
    sleep 1m
done
T_PID=$(ps aux | grep Tomcat6 | awk 'NR==1{print $2}')

kill -9 $T_PID

service Tomcat6 start
sleep 1m