ruby on rails - software - No se puede detener el servidor de rieles
ruby on rails tutorial (18)
Además, asegúrese de estar haciendo el comando Cntrl + C en el mismo terminal (pestaña) que se utiliza para iniciar el servidor.
En mi caso, tenía 2 pestañas, pero me olvidé de detener el servidor de la pestaña correcta y me preguntaba por qué Cntrl + C no funciona.
Soy nuevo en rails y estoy usando una máquina ubuntu y el IDE rubymine. El problema es que no puedo detener el servidor de los rieles. Traté de detener el servidor matando el proceso de los rieles. Pero, cuando ejecuto pgrep -l rails
, no se encuentra tal proceso. Entonces, solo puedo matar procesos de ruby, pero el servidor no se detiene.
Intenté ./script/server stop
(desde que lo inicié ejecutando ./script/server start
), pero eso no funcionó. Busqué en Google y encontré algunas publicaciones stackoverflow, intenté cambiar el puerto de escucha del puerto localhost pero sin éxito. ¿Alguien podría ayudar?
Ctrl-Z normalmente debería hacer el truco.
Cuando el servidor Rails no se inicia significa que ya se está ejecutando, entonces puede comenzar utilizando un nuevo puerto, por ejemplo.
rails s -p 3001
o se inicia y se detiene en el caso de que desee eliminar la carpeta temporal en la estructura de directorios de los rieles , inicia el servidor de rieles.
Elimine server.pid de la carpeta tmp / pids. En mi caso, el error fue: Un servidor ya se está ejecutando. Compruebe /home/sbhatta/myapp/tmp/pids/server.pid.
Entonces, elimino server.pid
rm /home/sbhatta/myapp/tmp/pids/server.pid
luego ejecuta rails s
En mi MAC, los killall -9 rails
no funcionan. Pero killall -9 ruby
hace.
Es tarde para esta pregunta. Aquí está mi 2 centavos. Hice una tarea de rake para detener el servidor cuando no tengo acceso a él. Pero solo probé en Mac.
Con esto, simplemente puede agregarlo a su proyecto y luego ejecutar el comando rake.
Aqui tienes:
Enlace de Gist: la versión más pequeña estará aquí. https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake
Algún código aquí:
# Make a file under: `project_root/lib/tasks/server.rake`
# Then paste the following code
namespace :server do
desc "Stop the running server by killing the PID"
task :kill do
STDOUT.puts "Enter port number: "
post_number = STDIN.gets.strip
system "pid=$(lsof -i:#{post_number.to_i} -t); kill -TERM $pid || kill -KILL $pid"
end
end
# Then to use it in the terminal: `rake server:kill`
Generalmente uso:
killall ruby
O
pkill -9 ruby
que matará a todos los procesos relacionados con ruby que se están ejecutando como rails server
rails console
, rails console
, etc.
Lo he notado en Windows (estoy usando 10 pero no estoy seguro si lo mismo para oler). Si usa cmd.exe y ctrl + c, el servidor Raisl se detiene correctamente.
Sin embargo, si usas Git Bash, no es así. Dice que sí, pero cuando observas las tmp pids, sigue ahí.
Tal vez un error con git bash?
Los siguientes son los pasos para matar el proceso del servidor:
1. lsof -i tcp:3000
2. kill -9 1234
donde 1234
es el PID del proceso: localhost: 3000 en el paso 1.
O
Elimine el archivo (server.pid) en Rails.root/tmp/pids/
y reinicie el servidor.
O
abra la aplicación en otro puerto usando el comando:
rails s -p 3001
Puede usar otros puertos como los siguientes:
rails server -p 3001
Normalmente en su terminal puede intentar Ctrl + C
para apagar el servidor.
La otra forma de matar el servidor predeterminado de Ruby on Rails (que es WEBrick
) es:
kill -INT $(cat tmp/pids/server.pid)
En su terminal para averiguar el PID del proceso:
$ lsof -wni tcp:3000
Luego, use el número en la columna PID para matar el proceso:
Por ejemplo:
$ kill -9 PID
Y algunas de las otras respuestas que encontré son:
Para detener el servidor de rieles mientras se está ejecutando, presione:
CTRL-C
CTRL-Z
Tendrás control de vuelta a bash
. Luego escribe (sin $
):
$ fg
Y esto volverá al proceso, y luego saldrá de Rails s
correctamente.
Es un poco molesto, pero esto es mejor que matar el proceso manualmente. No es tan malo y es lo mejor que pude descubrir.
Respuesta actualizada:
Puede usar los killall -9 rails
para matar todas las aplicaciones en ejecución con " rails
" en el nombre.
killall -9 rails
Una manera muy fácil sería
gem install shutup
luego ve a la carpeta actual de tu proyecto de carriles y ejecuta
shutup
# esto matará el proceso Rails actualmente en ejecución
Puedes usar el comando ''shutup'' cada vez que quieras
DICLAIMER: Soy el creador de esta joya
NOTA: si está utilizando rvm instale la gema globalmente
rvm @global do gem install shutup
Use ctrl+c
para apagar su servidor Webrick.
Lamentablemente, si no funciona, cierre con fuerza el terminal y reinícielo.
Otro truco es que
1. open your system-monitor(a gui application) on ubuntu
2. Select processes tab
3. Then look for a process having name ''ruby''
4. End that process
puedes usar el comando grep de la siguiente manera,
ps aux | grep rails
y entonces
kill -9 {process_id}
revisa el /tmp/tmp/server.pid
hay un pid dentro.
Por lo general, haré "matar -9 THE_PID" en el cmd
killall -9 rails
como sugirió Sri y no funcionó. Ajusté el comando para killall -9 ruby
y el servidor se cerró de inmediato.
Tl; dr: killall -9 ruby
pkill -9 rails
para matar todo el proceso de rieles
Respuesta actualizada
ps aux|grep ''rails''|grep -v ''grep''|awk ''{ print $2 }''|xargs kill -9
Esto matará cualquier proceso de raíles en funcionamiento. Reemplaza los "rieles" con otra cosa para eliminar cualquier otro proceso.
1. Simplemente elimine el archivo pid del directorio de la aplicación Rails
Rails_app -> tmp -> pids -> pid file
Eliminar el archivo y ejecutar
rails start
2. Para Rails 5.0 y superior, puede usar este comando
rails restart
Paso 1: encuentre cuáles son los artículos que consumen 3000 puertos.
lsof -i:3000
Paso 2: Encuentra el proceso llamado
Para Mac
ruby TCP localhost:hbci (LISTEN)
Para Ubuntu
ruby TCP *:3000 (LISTEN)
Paso 3: Encuentra el PID del proceso y mátalo.
kill -9 PID