pkill vs. killall

Hola a todos, estoy intentando configurar un script para arrancar y parar un programa.

Hasta ahora para matar el proceso utilizaba la llamada a sistema "killall" de esta forma:

killall proceso

Pero he visto por los foros que la gente utiliza "pkill":

pkill proceso

He estado buscando informacion, segun el man:

killall  sends  a  signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent.
pkill will send the specified signal (by default SIGTERM) to each process instead of listing them on stdout.

He probado con los dos, y con los dos casi siempre se mata el proceso, pero a veces se queda en marcha y es necesario un "kill -9 PID".

¿Alguien me puede explicar la diferencia entre ellos?

Muchas gracias y saludos.

Con pkill puedes hacer algo como:

# pkill ^apa.*

Killall proceso , puede no responderte si ,la aplicacion esta colgada ,en tal caso tendrías que hacer

killall  -KILL proceso

Y va igual si usas kill o pkill .