问题
Using ps -ef | grep tomcat I found a tomcat server that is running. I tried kill -9 {id} but it returns "No such process." What am I doing wrong?
Here's an example:
Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep tomcat
2043706342 39707 39695 0 3:40PM ttys000 0:00.00 grep tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process
回答1:
There is no need to know Tomcat's pid (process ID) to kill it. You can use the following command to kill Tomcat:
pkill -9 -f tomcat
回答2:
ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9
https://gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076
Part 1
ps -ef | grep tomcat => Get all processes with tomcat grep
Part 2
Once we have process details, we pipe it into the part 2 of the script
awk '{print $2}' | xargs kill -9 => Get the second column [Process id] and kill them with -9 option
Hope this helps.
回答3:
Tomcat is not running. Your search is showing you the grep process, which is searching for tomcat. Of course, by the time you see that output, grep is no longer running, so the pid is no longer valid.
回答4:
As others already noted, you have seen the grep process. If you want to restrict the output to tomcat itself, you have two alternatives
wrap the first searched character in a character class
ps -ef | grep '[t]omcat'This searches for tomcat too, but misses the
grep [t]omcatentry, because it isn't matched by[t]omcat.use a custom output format with ps
ps -e -o pid,comm | grep tomcatThis shows only the pid and the name of the process without the process arguments. So, grep is listed as
grepand not asgrep tomcat.
回答5:
just type the below command in terminal
ps -ef |grep 'catalina'
copy the value of process id then type the following command and paste process id
kill -9 processid
回答6:
ps -ef
will list all your currently running processes
| grep tomcat
will pass the output to grep and look for instances of tomcat. Since the grep is a process itself, it is returned from your command. However, your output shows no processes of Tomcat running.
回答7:
ps -Af | grep "tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
回答8:
In tomcat/bin/catalina.sh
add the following line after just after the comment section ends:
CATALINA_PID=someFile.txt
then, to kill a running instance of Tomcat, you can use:
kill -9 `cat someFile.txt`
回答9:
This worked for me:
Step 1 : echo ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'
This above command return "process_id"
Step 2: kill -9 process_id
// This process_id same as Step 1: output
回答10:
I had to terminate activeMQ java process among many java processes on the server, and this one is started by the specific user (username is activemq). So good way of separating may be to start a process by a specific user :
ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
回答11:
as @Aurand to said, tomcat is not running. you can use the
ps -ef |grep java | grep tomcat command to ignore the ps programs.
worked for me in the shell scripte files.
回答12:
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
NR is for the number of records in the input file.
awk can find or replaces text
回答13:
To kill a process by name I use the following
ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9
The tr -s " " | cut -d " " -f 2 is same as awk '{print $2}'. tr supressess the tab spaces into single space and cut is provided with <SPACE> as the delimiter and the second column is requested. The second column in the ps aux output is the process id.
回答14:
this works very well (find tomcat processes and kill them forcibly)
ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9
来源:https://stackoverflow.com/questions/15236308/how-do-i-kill-this-tomcat-process-in-terminal