GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre pkill y killall?

El pgrep y pkill Las utilidades se introdujeron en Solaris 7 de Sun y, como señaló g33klord, toman un patrón como argumento que se compara con los nombres de los procesos en ejecución. Mientras que pgrep simplemente imprime una lista de procesos coincidentes, pkill enviará la señal especificada (o SIGTERM por defecto) a los procesos. Las opciones comunes y la semántica entre pgrep y pkill es útil cuando desea tener cuidado y primero revisar la lista de procesos coincidentes con pgrep , luego procede a matarlos con pkill . pgrep y pkill son proporcionados por el paquete procps, que también proporciona otros /proc utilidades del sistema de archivos, como ps , top , free , uptime entre otros.

El killall El comando lo proporciona el paquete pmisc y difiere de pkill en que, de forma predeterminada, coincide exactamente con el nombre del argumento (hasta los primeros 15 caracteres) al determinar los procesos a los que se enviarán las señales. El -e , --exact La opción se puede especificar para requerir también coincidencias exactas para nombres de más de 15 caracteres. Esto hace que killall algo más seguro de usar en comparación con pkill . Si el argumento especificado contiene una barra inclinada (/ ), el argumento se interpreta como un nombre de archivo y los procesos que ejecutan ese archivo en particular se seleccionarán como destinatarios de la señal. killall también admite la coincidencia de expresiones regulares de nombres de procesos, a través de -r , --regexp opción.

Hay otras diferencias también. El killall El comando, por ejemplo, tiene opciones para hacer coincidir los procesos por antigüedad (-o , --older-than y -y , --younger-than ), mientras que pkill se le puede indicar que solo elimine procesos en un terminal específico (a través del -t opción). Claramente entonces, los dos comandos tienen nichos específicos.

Tenga en cuenta que el killall comando en sistemas descendientes de Unix System V (en particular, Solaris de Sun, AIX de IBM y HP-UX de HP) mata a todos procesos eliminables por un usuario en particular, cerrando efectivamente el sistema si se ejecuta por root.

Las utilidades pmisc de Linux han sido portadas a BSD (y en extensión Mac OS X), por lo tanto killall sigue la semántica de "matar procesos por nombre".


pkill es el que vale la pena enseñar a las generaciones futuras, tanto por los filtros que mencionas como por el hecho de que está emparejado con el altamente reutilizable pgrep . Eliminan los procesos de la misma manera y ninguno de ellos recursivamente, aunque con pgrep , puede seleccionar por sesión (per-tty, think setsid) o grupo de procesos (think job control).


una diferencia es que killall tomar el nombre exacto del proceso como argumento mientras que pkill puede tomar nombre parcial o completo.

Puede consultar esta pregunta para conocer en profundidad sobre pkill


Linux
  1. ¿Cuál es la diferencia entre fsck y e2fsck?

  2. ¿Cuál es la diferencia entre adduser y useradd?

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

  4. ¿Cuál es la diferencia entre kill, pkill y killall?

  5. ¿Cuál es la diferencia entre $(CC) y $CC?

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

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

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