On Wed, Jun 03, 2009 at 10:29:08AM +0100, James Bensley wrote:
restart) echo -n "Stopping my_app: " pgrep my_app | while read PIDS; do # I have chosen this method because my_app spawns various child processes kill -9 $PIDS # and they all need to DIE! (Killing the parent process would kill the child processes done # however there are actually two parent processes so this seems like a good idea?) echo -n "Starting my_app: " /usr/local/my_app/sbin/my_app_bin & exit $? ;;
I'd think that the pgrep is matching both the processes you want to kill _and_ the init.d script itself. Try "pgrep -x" which will exactly match the specified command.
Even better, use "pkill -x -9 my_app" which will combine the grep and kill tasks in a single command; the -9 specifies the signal to send to the matches processes.
"man pgrep" for more information on both commands.
John