GNU/Linux >> Tutoriales Linux >  >> Linux

¿La diferencia entre Kill, Pkill y Killall?

Estoy familiarizado con kill comando, y la mayoría de las veces solo usamos kill -9 para matar un proceso a la fuerza, hay muchas otras señales que se pueden usar con kill . Pero me pregunto cuáles son los casos de uso de pkill y killall , si ya hay un comando de matar.

Haz pkill y killall usa el kill comando en su implementación? Quiero decir, son solo envoltorios sobre kill o tienen su propia implementación?

También me gustaría saber cómo pgrep El comando obtiene la identificación del proceso del nombre del proceso.

¿Todos estos comandos utilizan las mismas llamadas al sistema subyacente? ¿Hay alguna diferencia desde el punto de vista del rendimiento, cuál es más rápido?

Respuesta aceptada:

El kill El comando es un contenedor muy simple para kill llamada al sistema , que solo conoce los ID de proceso (PID). pkill y killall también son envoltorios para kill llamada al sistema , (en realidad, a la biblioteca libc que invoca directamente la llamada del sistema), pero puede determinar los PID por usted, en función de elementos como el nombre del proceso, el propietario del proceso, la identificación de la sesión, etc.

Cómo pkill y killall el trabajo se puede ver usando ltrace o strace en ellos. En Linux, ambos leen el /proc sistema de archivos, y para cada pid (directorio) encontrado, recorre la ruta de una manera de identificar un proceso por su nombre u otros atributos. Cómo se hace esto es técnicamente hablando, kernel y sistema específico. En general, leen de /proc/<PID>/stat que contiene el nombre del comando como segundo campo. Para pkill -f y pgrep examine el /cmdline entrada para cada entrada de proceso de PID.

pkill y pgrep usa el readproc llamada al sistema, mientras que killall no es. No podría decir si hay una diferencia de rendimiento:tendrás que comparar eso por tu cuenta.


Linux
  1. ¿Cuál es la diferencia entre InnoDB y MyISAM?

  2. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  3. ¿La diferencia entre 'env' y 'printenv'?

  4. La diferencia entre fork(), vfork(), exec() y clone()

  5. ¿Cuál es la diferencia entre ls y l?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre los comandos kill y killall?

4 formas de eliminar un proceso:kill, killall, pkill, xkill

Cómo matar procesos en Linux usando kill, killall y pkill

¿Cuál es la diferencia entre Kernel no preventivo, preventivo y selectivo?

¿Cuál es la diferencia entre unlink y rm?