ruby on rails - rutas - El servidor de Rails dice que el puerto ya está usado, ¿cómo matar ese proceso?
rails paso a paso (9)
Algunas veces existe la posibilidad de que el servidor de rieles no se cierre correctamente. Se puede encontrar el proceso utilizado por los rieles.
ps aux | carriles grep
La salida será como
user 12609 9.8 0.5 66456 45480 pts/0 Sl+ 21:06 0:02 /home/user/.rvm/rubies/ruby-2.2.0-preview1/bin/ruby bin/rails s
Aquí se utiliza process_id 12609 por su servidor de rieles.
Puedes matarlo fácilmente por comando
matar -9 12609
Estoy en un mac, haciendo:
servidor de rieles
Yo obtengo:
2010-12-17 12:35:15] INFO WEBrick 1.3.1
[2010-12-17 12:35:15] INFO ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0]
[2010-12-17 12:35:15] WARN TCPServer Error: Address already in use - bind(2)
Exiting
Sé que puedo comenzar uno en un nuevo puerto, pero quiero terminar este proceso.
Debe obtener el ID de proceso del programa usando el puerto 3000 de TCP. Para obtener el ID de proceso
lsof -i tcp:3000 -t
Y luego, utilizando ese identificador de proceso, simplemente elimine el proceso utilizando el comando kill de ubuntu.
kill -9 pid
O simplemente ejecute el comando de combinación mencionado anteriormente. Primero buscará pid y luego matará ese proceso.
kill -9 $(lsof -i tcp:3000 -t)
Escribir:
man lsof
Luego busca -w, -n, y -i
-i: cosas de internet -n: lo hace más rápido -w: alterna las advertencias
Hay muchos más detalles en las páginas del manual.
Para cualquier persona que se encuentre con esta pregunta que no está en una Mac: suponiendo que sepa que su servidor se está ejecutando en el puerto 3000, puede hacerlo de una sola vez ejecutando lo siguiente:
fuser -k 3000/tcp
Pero como mencionó Toby, la implementación del fusor en Mac OS es bastante primitiva y este comando no funcionará en mac.
Si estás en Windows Machine sigue estos pasos.
c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir
Ahí encontrarás un archivo llamado server.pid
bórralo.
c:/project/tmp/pid> del *.pid
Eso es.
EDITAR: por favor refiérase a esto
Suponiendo que está buscando matar a cualquier cosa que esté en el puerto 3000 (que es lo que normalmente utiliza webrick), escriba esto en su terminal para averiguar el PID del proceso:
$ lsof -wni tcp:3000
Luego, use el número en la columna PID para finalizar el proceso:
$ kill -9 PID
Todas las respuestas anteriores son realmente buenas, pero necesitaba una forma de escribir lo menos posible en el terminal, así que creé una gema para eso. Puedes instalar la gema solo una vez y ejecutar el comando ''shutup'' cada vez que quieras finalizar el proceso de Rails (mientras estés en la carpeta actual).
gem install shutup
Luego vaya a la carpeta actual de su proyecto de rieles y ejecute
shutup
# esto matará el proceso de Rails actualmente en ejecución
Puedes usar el comando ''shutup'' cada vez que quieras
DICLAIMER: Soy el creador de esta gema
NOTA: si está utilizando rvm, instale la gema globalmente
rvm @global do gem install shutup
ps aux | grep rails usa este comando puedes matar el servidor
kill -9 $(lsof -i tcp:3000 -t)