cmdsubst>é o prompt secundário impresso pelo zshshell 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) killlque 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 zshestá 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
-topçã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 psimplementação que suporta a lstartcoluna (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?