mejor manera para desconectar usuarios remotos

Alvaro Herrera alvherre en alvh.no-ip.org
Mar Ene 27 09:13:18 CLST 2009


Aldrin Martoq escribió:

> Yep, _mucho_ mejor! Solo te falto iterar todo el arbol hasta el final,
> no solo la primera capa:

En realidad creo que con la primera iteración basta, porque si le mandas
un SIGHUP al proceso sshd que está dos niveles por debajo del proceso en
sshd.pid, éste se encarga de propagar la señal hacia los hijos de más
abajo, tal como se supone que un shell debe hacer.  En tu ejemplo de más
abajo:

> amartoq en videopodcast:~$ pstree -Ap $(cat /var/run/sshd.pid)
> sshd(4859)-+-sshd(11117)---sshd(11125)---bash(11128)
>            `-sshd(12035)---sshd(12039)---bash(12042)
> amartoq en videopodcast:~$ ./h.sh 
> hijos sshd (4859): 11128 11125 11117 12042 12039 12035

Si uno da SIGHUP a los procesos 11125 y 12039, automáticamente se
cierran también 11128 y 12042, y ellos propagan la señal también a sus
hijos los cuales también se cierran si corresponde.

> --------------------------h.sh-----------
> #!/bin/bash
> hijos() {
>   for i in $(ps --ppid $1 -o pid --no-headers); do
>     (hijos $i)
>     echo -n "$i "
>   done
> }
> sshdpid=$(cat /var/run/sshd.pid)
> 
> echo "hijos sshd ($sshdpid):" $(hijos $sshdpid)
> -----------------------------------------

Top.

-- 
Alvaro Herrera                               http://www.PlanetPostgreSQL.org/
The easiest way to resolve [trivial code guidelines disputes] is to fire
one or both of the people involved.                      (Damian Conway)


Más información sobre la lista de distribución Linux