Ubuntu – Not able to stop apache processes

Apache2process

Update: Responding to the comment:

check processes of apache:

$ ps a | grep apache 3
grep: 3: No such file or directory
$ ps a | grep apache
 4514 pts/0    S+     0:00 grep --color=auto apache
$ ps a | grep apache2
 4516 pts/0    S+     0:00 grep --color=auto apache2

checking apache error log

$ tail /var/log/apache2/error.log
[Sun Aug 07 03:14:19 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 03:13:58 2011] [notice] Graceful restart requested, doing restart
[Mon Aug 08 03:14:00 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations
[Mon Aug 08 09:03:16 2011] [notice] caught SIGTERM, shutting down
[Mon Aug 08 09:05:47 2011] [notice] Apache/2.2.16 (Ubuntu) PHP/5.3.3-1ubuntu9.5 with Suhosin-Patch configured -- resuming normal operations

Original: I have stopped apache, but why it still has the same number of processes running?

$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2
$ /etc/init.d/apache2 stop
 * Stopping web server apache2                            [ OK ] 
$ ps -A | grep apache
 1663 ?        00:00:00 apache2
 1667 ?        00:00:00 apache2
 1668 ?        00:00:00 apache2
 1669 ?        00:00:00 apache2
 1670 ?        00:00:00 apache2
 1671 ?        00:00:00 apache2

Thanks!

Best Answer

This can happen occasionally when Apache refuses to stop nicely or has Zombie Processes. For the former you can kill all running processes with sudo killall -9 apache2; however, for the latter you'll simple need to wait for them to go away. In the event it's Apache not wanting to stop nicely, what you'll really want to do is investigate what's going on. Finding out exactly what's going on can be difficult though.

An interactive strace of the process id may lend a clue as to what site(s) are acting up and causing issues. From your above ps -A you can check the first process with

strace -p 1663

This will attach to the running processes stack trace providing live output of what is going on. At any time you can Ctrl+C

An additional resource is the main error log for Apache this can be found in /var/log/apache2/error.log You'll want to get a decent chunk of the log and skim it for details. If the problem is an ongoing issue running

tail -f /var/log/apache2/error.log

This similar to the strace will run in realtime. For the last N lines replace -f with -# where the # is a positive number like 50, 100, 282, etc.

Related Question