Ecco, proprio per questo chiedevo delucidazioni sulla scelta dell'utente in uno dei post precedenti...

Originariamente inviato da magnus
Altrimenti dovrei lanciare lo script per ogni utente presente nel sistema ogni volta
Vabbè questo non è un problema dato che si può automatizzare tranquillamente. Vedi se questo va bene... l'ideale (in termini di tempo) sarebbe trovare gli utenti che hanno effettivamente processi duplicati e lavorare solo su quelli, ma si tratterebbe di fare modifiche troppo contorte allo script di prima.

codice:
#!/bin/bash

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

user_list=`cat /etc/shadow | cut -d ":" -f 1`

for user_name in $user_list; do

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

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

exit 0
Si presume chiaramente che chi avvia il processo sia un amministratore. Stavolta comunque basta scrivere

# ./nome_script.sh <nome_processo>

visto che verrà eseguito per tutti gli utenti.