Después de usar simplemente kill <some_pid>
en sistemas Unix desde hace muchos años, he aprendido pkill
de un joven Linux-comprensión compañero de trabajo colega 1 .
Pronto acepté la forma de Linux, pgrep
-ing y pkill
-ing a través de muchos días y noches, a través de ralentizaciones y condiciones de carrera. Todo esto estuvo muy bien.
Pero ahora no veo nada más que killall
. Parece que los procedimientos solo mencionan killall
, y no estoy seguro de si esto es algún tipo de desarrollo paralelo, o si killall
es un sucesor pkill
u otra cosa.
Parece funcionar como un objetivo más específico pkill
, pero estoy seguro de que me falta algo.
¿Puede una persona Ubuntu / Debian-savvy 2 explicar cuándo (o por qué) killall
debe usarse, especialmente si debe usarse con preferencia pkill
(cuando a pkill
menudo parece más fácil, porque puedo ser más descuidado con la coincidencia de nombres, al menos por defecto).
Cuando hablo killall
, no estoy pensando en el comando que en algunos sistemas Unix (Solaris, AIX,?) Mataría todos los procesos de los usuarios. Aquí hay una descripción de esa versión, de una página de manual para AIX de IBM :
El comando killall cancela todos los procesos que inició, excepto los que producen el proceso killall. Este comando proporciona un medio conveniente para cancelar todos los procesos creados por el shell que usted controla. Cuando lo inicia un usuario root, el comando killall cancela todos los procesos cancelables, excepto aquellos procesos que lo iniciaron. Si se especifican varias señales, solo la última es efectiva.
1 'colega' es una actualización gratuita de 'compañero de trabajo', también podría serlo.
2 Originalmente pensé que esto era una cosa de Linux o Debian, pero algunas fuentes dicen que Linux killall
se deriva de Unix con sabor a BSD.
fuente
killall
sistema Solaris (¿antiguo?), Pero se comportó de manera diferente. Lo mató todo.killall is safer for users to blindly copy and paste
, excepto si estás en una máquina donde Killall realmente mata a todos. Es lamentable que las dos utilidades diferentes tengan el mismo nombre.Tenga cuidado con "killall". En algunos sistemas (se me olvida cuál), killall mata todos los procesos. Ignorará silenciosamente los argumentos y detendrá su sistema por completo.
fuente
kill -9 -1
podría matar su sistema, ykillall -9 -1
podría también. Pero no solokillall [program]
si activa / etc / bash_completion, después
killall <part_of_process_name>
y presiona la pestaña - auto completa el nombre del proceso de la lista de procesos en ejecuciónfuente
pkill plug<tab>
eliminar el plugin flash para Firefox cuando sé que no tengo nada que quiera usar por un tiempo, pero aún quiero usar Firefox activamente. Esta es una función del shell, no una diferencia entre killall y pgrep / pkill.Si observa las opciones en ambos programas, verá que ambos hacen casi lo mismo, pero de diferentes maneras.
pkill realizará la coincidencia en varios atributos de un proceso (CMD, PID, PPID, UID ...) y enviará la señal dada a cada proceso que coincida. (Para CMD, se usa una expresión regular, para otros es una cadena). pkill no es interactivo, pero es mejor para programas por lotes.
killall realizará una coincidencia en el nombre del proceso (comm) o usuario (usuario), no en la cadena de comando completa. El argumento se usa como una cadena simple y debe coincidir con todo el valor 'comm' (también hay una opción --regexp para cambiar esto). killall tiene opciones --interactive y --younger- than, que pkill no tiene.
También hay un killall5 de días SysV y fue portado a otras variantes de UNIX (supuestamente bajo el paquete de Ubuntu 'sysutils'). Esto se comporta de manera diferente a la antigua usanza. Esto a menudo se usaba internamente en los scripts de inicio para apagar o cambiar al modo de usuario único.
fuente
pkill
nikillall
debe usarse en scripts, solo de forma interactiva y con precaución.