cmdsubst>
é o prompt secundário impresso pelo shell zsh
quando está aguardando o término de uma substituição de comando que está sendo inserida.
Se você obtiver esse prompt depois de digitar killl<Return>
, a única explicação razoável é que você tem um alias (que é alguma forma de expansão de macro de string) para killl
que se expande para algo que contém% co_de não finalizado. % de substituição de comandos, como:
$ alias 'killl=echo $(lsof -ti'
$ killl :22
cmdsubst>
Em que $(...)
está pedindo para você fechar essa substituição do comando zsh
.
Mais algumas notas:
- a saída de
$(...)
é classificada por pid. os números de pid são empacotados, um pid maior não é uma garantia de que o processo foi iniciado mais tarde. -
lsof
informará os soquetes TCP ou UDP que têm a porta 8080 como a porta de origem ou de destino, seja um soquete de escuta, aceitação ou conexão. - Se você deseja obter apenas o pid, use a opção
-i:8080
de-t
:lsof
-
lsof -ti:8080 | tail -n2
ékill -9
, que envia um sinal de que o aplicativo não pode agir para sair normalmente. Deve ser usado apenas como último recurso.
Para eliminar o processo iniciado mais recentemente que possui um limite de soquete (final) na porta 8080, você pode fazer:
#! /bin/sh -
unset IFS
pids=$(lsof -ti:8080) &&
LC_ALL=C ps -o pid=,lstart= -p $pids |
LC_ALL=C sort -k6,6n -k4,4M -k3,3n -k5,5 -k1,1n |
awk 'END{system("kill " $1)}'
(assume% GNUkill -s KILL
(como encontrado no macOS) e uma implementação sort
que suporta a coluna ps
(como macOS 'e procps-ng's, embora o código tenha que ser atualizado para procps-ng onde os campos mês e dia são trocados)).