试图写一个脚本自动杀死程序(mac/unix - kill tomcat)

Con*_*Del 3 unix bash shell

手工,这是过程:

ps -ef | grep tomcat
Run Code Online (Sandbox Code Playgroud)

结果如下:

0 39107 1 0 5:40PM ttys004 5:22.34 /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/bin/java -Djava.util.logging.config.file=/opt/local/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -server -Xms384m -Xmx768m -XX:NewSize=256m -XX:NewRatio=2 -XX:PermSize=128m -XX:MaxPermSize=384m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:+CMSClassUnloadingEnabled -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.endorsed.dirs=/opt/local/tomcat7/endorsed -classpath /opt/local/tomcat7/bin/bootstrap.jar:/opt/local/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/opt/local/tomcat7 -Dcatalina.home=/opt/local/tomcat7 -Djava.io.tmpdir=/opt/local/tomcat7/temp org.apache.catalina.startup.Bootstrap start

第二个数字是pid.

然后我做

sudo kill tomcat_pid
Run Code Online (Sandbox Code Playgroud)

我该如何自动化?

PS.我知道有一个shutdown.sh脚本.我试过了,但它永远不会奏效.

moo*_*dow 7

ps -ef | grep tomcat | awk '{ print $2 }' | xargs kill将提取第二个数字并将其传递给kill.实际上,您可能希望ps -efww确保获得整个命令行.

这真的不是最好的方法; 理想情况下,您应该在创建稍后要杀死的进程时存储PID,以确保不会杀死意外碰巧与您正在搜索的字符串匹配的事物(以及其他潜在问题).