Eu acho que você vê killall em instruções porque, por padrão, ele requer o nome exato do processo, enquanto o pkill faz a correspondência básica de padrões. Assim, o killall é mais seguro para os usuários copiarem e colarem cegamente.
Pkill e killall ambos têm opções de distinção. Killall tem uma flag para combinar com a idade do processo, pkill tem um flag para matar apenas processos em um dado tty. Etcetera ad nauseum. Nem é melhor , eles só têm diferentes especialidades.
Eu vejo em suas páginas man que o killall vem do pacote psmisc , que tem vários utilitários de gerenciamento de processo, mas notavelmente não contém ps
. É o pacote procps que tem ps, top, kill e pkill (entre outros). Eu aposto que o process não originalmente tinha pkill, então psmisc arranhou uma coceira e veio com killall.
A página man do pkill / pgrep diz que eles foram introduzidos no Solaris 7. Como você mencionou, jgbelacqua , o killall do Solaris não era o utilitário que o psmisc fornece, portanto, o Solaris provavelmente só tinha o pacote procps. Alguém queria uma ferramenta de processo de correspondência de padrões, assim pkill e pgrep. Se foi desenvolvido pelo desenvolvedor ou adicionado posteriormente, não sei. Independentemente disso, ele se tornou parte de * nixes em todos os lugares.
Mais fontes: