Можно ли как-то завершать процессы без kill?
Можно.
Если в линукс-системе читать документацию, так же, как виндоус или в других операционных системах:
"Как страшно жить!" (с)
В винде тоже насилие!
Угу.
И что характерно, в Unix-подобных системах, к убийству (процесса(ов)), kill не имеет отношения никак. Его задача не в этом. Его задача, переслать процессу(ам) сигнал, который задаётся опционально.
А без параметра, kill к убийству не имеет отношения от слова совсем:
$ ps -eo pid,args| grep htop
89968 htop
$ strace -o strace-kill.txt kill 89968
$ tail -n5 strace-kill.txt
kill(89968, SIGTERM) = 0
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
При этом kill, это не /bin/kill:
$ enable | grep kill
enable kill
$ file /bin/kill
/bin/kill: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, stripped
$ enable --help | head -n 2
enable: enable [-a] [-dnps] [-f файл] [имя ...]
Enable and disable shell builtins.
$ kill -t
bash: kill: t: недопустимое указание сигнала
$ /bin/kill -t | grep ^15
15 TERM Завершено
И kill, это далеко не убиение:
$ ps aux | grep htop
user 102158 1.2 0.0 8288 4540 pts/6 S+ 10:06 0:01 htop
$ /bin/kill -s SIGSTOP 102158
$ ps aux | grep htop
user 102158 1.2 0.0 8288 4540 pts/6 T 10:06 0:02 htop
$ /bin/kill -s SIGCONT 102158
$ ps aux | grep htop
user 102158 1.1 0.0 8288 4540 pts/6 S 10:06 0:02 htop