Siempre quiero eliminar una identificación de proceso que escucha en el puerto 3000. Así que actualmente estoy usando,
1.lsof -i tcp:3000
dará salida como,
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
y mataré el PID usando,
2.kill -9 6697
Quiero crear un programa bash que realice este proceso automáticamente.
Intenté usar xargs para obtener el PID de la salida del primer comando pero fallé.
Respuesta1
Primero, desea la -t
opción lsof, que solo emite pids. También puedes darle a Kill una lista de pids, así que:
kill -9 $(lsof -ti tcp:3000)
Si haces esto con frecuencia, crea un alias.
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
Respuesta2
Aquí está (sin xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done