cmdsubst>
é o prompt secundário impresso pelo zsh
shell enquanto aguarda o final de uma substituição de comando ser inserida.
Se você receber esse prompt depois de entrar killl<Return>
, a única explicação razoável é que você tem um alias (que é uma forma de expansão de macro de cadeia) killl
que se expande para algo que contém uma $(...)
substituição de comando não terminada , como:
$ alias 'killl=echo $(lsof -ti'
$ killl :22
cmdsubst>
Onde zsh
está pedindo para você fechar essa $(...)
substituição de comando.
Mais algumas notas:
- a saída de
lsof
é classificada por pid. números de pid são agrupados, um pid maior não garante que o processo foi iniciado mais tarde.
-i:8080
relatará 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, pode usar a
-t
opção de lsof
:lsof -ti:8080 | tail -n2
kill -9
é kill -s KILL
, que envia um sinal que o aplicativo não pode agir para sair normalmente. Só deve ser usado como último recurso.
Para eliminar o processo iniciado mais recentemente, com um soquete vinculado (uma ou outra extremidade) na porta 8080, você pode:
#! /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 o GNU sort
(como encontrado no macOS) e uma ps
implementação que suporta a lstart
coluna (como o macOS e o procps-ng, embora o código precise ser atualizado para o processo onde os campos mês e dia são trocados)).
killl
?