3 votos

¿Cómo matar a dhcpcd?

El siguiente comando funciona perfectamente para iniciar el DHCP:

# dhcpcd -p eth0

El DHCP no puede detenerse una vez iniciado. El siguiente comando no funciona:

# dhcpcd -k eth0

Devuelve lo siguiente:

dhcpcd[4700]: sending signal 1 to pid 4086
dhcpcd[4700]: dhcpcd not running
dhcpcd[4700]: kill: Bad file number

¿Alguien podría ofrecer un consejo sobre cómo matar el DHCP?

1 votos

¿Es el pid 4086 una constante, o cambia?

0 votos

@DeathMaskSalesman No. Acabo de reiniciar el dispositivo y ejecutar el comando de nuevo. El PID es 4043 esta vez.

1 votos

Si tienes que incluir esto en un script, este fragmento puede ayudarte (tiene que ser ejecutado como Root): var=$(ps | grep dhcp) . Luego, en una nueva línea, haga kill $(echo -n $var | cut -d " " -f 0) y debería matar el proceso por completo.

7voto

Una forma de obtener dinámicamente el PID del dhcp proceso, y matarlo por completo, sería correr:

su
var=$(ps | grep dhcp)
kill $(echo -n $var | cut -d " " -f 0)

Específicamente:

  • La línea 1 pide los permisos de root;
  • La línea 2 asigna la salida de ps (que enumera los procesos activos), filtrado por grep con la palabra clave dhcp a la variable var ;
  • llamadas de la línea 3 kill para terminar el valor contenido en el primer campo ( -f 0 ) de la variable var diciendo cut para separar los campos con un espacio en blanco ( -d " " ). No por casualidad, el valor mencionado corresponde al PID del proceso dhcpcd .

3 votos

Eso mataría cualquier proceso con "dhcp" en su nombre. Incluso killall dhcpcd sería una mejor opción.

0 votos

@SimonRichter Estás en un error: ya que hago uso de cut sólo el primer PID es candidato a ser matado. Le animamos a que experimente usted mismo, si no cree en la corrección de la respuesta.

2 votos

"cualquiera" significa "cualquiera de ellos", no "todos ellos". Específicamente, mata al que tiene el PID más pequeño, así que, por ejemplo, si tengo dos puertos Ethernet, y ejecuto dhcpd en uno, y dhcpcd en el otro, entonces el dhcpd es probable que se inicie primero porque tiene mayor prioridad durante el arranque, y su comando lo mataría en su lugar. Además, si dhcpcd tiene un PID alto, la probabilidad de que coincida con el grep dhcp que ha terminado en el momento en que kill se llama, por lo que no haría nada en este caso.

1voto

warlock Puntos 21

Esto podría hacerse con awk también. Los comandos serían;

su

kill -9 $(ps -e | grep dhcp | awk '{ print $1 }')

Detalles

su para saltar al shell Root, kill -9 para forzar la muerte ps -e enumera todos los procesos en detalle, lo canalizamos a través de grep dhcp que sólo emite algo de ps -e a dhcp, luego lo canalizamos a través de awk, el print $1 sólo imprime el contenido del primer campo, que es el id del proceso de dhcp. Y kill matará el proceso que coincida con ese id de proceso.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X