Lembrando que a página man do skill diz:
These tools are probably obsolete and unportable. The command syntax is poorly defined. Consider using the killall, pkill, and pgrep commands instead
Eu acredito que a sintaxe que você está procurando é:
skill -t pts/0 -t pts/1 -t pts/3
... parece que a sintaxe expression
requer um tty por -t
flag.
Por que a habilidade não está realmente matando os processos, minha suspeita é que o formato de / proc / PID / stat mudou desde que a habilidade foi compilada, fazendo com que ela pule o processo no check_proc function (em uma cópia arbitrária do github de skill.c eu encontrei). Parece analisar / proc / PID / stat manualmente e nunca envia um sinal de kill para o (s) processo (s):
open("/proc/21102/stat", O_RDONLY) = 4
read(4, "21102 (bash) S 21101 21102 21102"..., 128) = 128
...
open("/proc/22839/stat", O_RDONLY) = 4
read(4, "22839 (view) S 21102 22839 21102"..., 128) = 128
Quando eu compilo uma nova cópia de habilidade, ela funciona como pretendido:
open("/proc/22926/stat", O_RDONLY) = 4
read(4, "22926 (bash) S 22925 22926 22926"..., 128) = 128
readlink("/proc/22926/tty", 0x7f3e47e073e0, 127) = -1 ENOENT (No such file or directory)
readlink("/proc/22926/fd/2", "/dev/pts/2", 127) = 10
kill(22926, SIGKILL) = 0
Eu seguiria a sugestão da manpage e tonioc e mudaria para pkill
; por exemplo, para matar processos em pts / 1 e / ou pts / 2:
pkill -HUP -t pts/1,pts/2