Questo dovrebbe andare

codice:
#!/bin/sh

if [ "$#" -ne 1 ]
then
	echo "usage: $0 <process_name>"
	exit 1
fi

lines=`ps -A | awk /"$1"$/'{print $1}' | wc -l | cut -d " " -f 1`

if [ "$lines" -gt 1 ]
then
	kill `ps -A | awk /"$1"$/'{print $1}' | head -$(($lines-1))`
fi

exit 0
va richiamato da shell col nome del processo di cui eliminare i doppioni, nel tuo caso

codice:
$ nome_script.sh java
ti consiglio vivamente di non sbagliare a scrivere la stringa in input... ;D

Questo però elimina tutti i doppioni senza badare all'utente che ha avviato il processo... volevo sapere: come va deciso di quale utente vanno eliminati i doppioni? E' un nome fisso (tipo "pippo" appunto) o cambia di volta in volta? In ogni caso basterebbe cambiare il comando ps aggiungendo l'opzione -U nome_utente, ma specifica meglio questo punto...