kill отправляет сигнал процессу. По умолчанию — SIGTERM (15), который просит процесс завершиться корректно (graceful shutdown). kill -9 отправляет SIGKILL — принудительное завершение, которое процесс не может перехватить.
Основные сигналы: SIGTERM (завершись), SIGKILL (убить немедленно), SIGHUP (перечитать конфиг), SIGINT (Ctrl+C). В Go сигналы ловятся через signal.Notify:
sig := make(chan os.Signal, 1)
signal.Notify(sig, syscall.SIGTERM, syscall.SIGINT)
<-sig
// graceful shutdown