Saltar al contenido

Ruby script como servicio

Si encuentras alguna parte que no comprendes puedes dejarlo en los comentarios y te responderemos tan rápido como podamos.

Solución:

De hecho, encontré una manera mucho mejor de hacerlo mediante el uso de scripts de Ruby.

Así es como lo hice:

En primer lugar, instalé daemon

gem install daemons

Entonces hice:

require 'rubygems'
require 'daemons'

pwd  = File.dirname(File.expand_path(__FILE__))
file = pwd + '/runner.rb'

Daemons.run_proc(
   'my_project', # name of daemon
   :log_output => true
 ) do
   exec "ruby #file"
end

Luego creo un archivo llamado runner.rb, en el que puedo llamar a mis scripts como:

require "/var/www/rails/my_project/config/environment"
Post.send('details....')

¡Daemons es una gran joya!

RAA – deamons es una herramienta muy útil para crear demonios Unix a partir de scripts Ruby.

Publicando mi respuesta después de más de una década, el póster original hizo la pregunta.

Primero, creemos un script Ruby simple, que ejecutará un ciclo infinito:

# mydaemon.rb 
$stdout.reopen('/home/rmishra/mydaemon.log', 'a')
$stdout.sync = true
loop.with_index do |_, i|
  puts i
  sleep(3)
end

Puede ejecutar la secuencia de comandos en segundo plano agregando el signo ampersand:

/home/rmishra$ ruby mydaemon.rb &
[1] *pid*

Para iniciar este script automáticamente y reiniciarlo cada vez que se detuvo o se bloqueó, crearemos un servicio.

# mydaemon.service
[Unit]
Description=Simple supervisor

[Service]
User=username
Group=username
WorkingDirectory=/home/username
Restart=always
ExecStart=/usr/bin/ruby mydaemon.rb

[Install]
WantedBy=multi-user.target

Ahora, copiemos este archivo de servicio al directorio systemd:

sudo cp mydaemon.service /lib/systemd/system -v

Finalmente, utilice el enable Comando para asegurarse de que el servicio se inicia cada vez que se inicia el sistema:

sudo systemctl enable mydaemon.service

El servicio se puede iniciar, detener o reiniciar utilizando estándar systemd comandos:

sudo systemctl status mydaemon
sudo systemctl start mydaemon
sudo systemctl stop mydaemon
sudo systemctl restart mydaemon

Fuente

Aquí puedes ver las reseñas y valoraciones de los lectores

Acuérdate de que te brindamos la opción de decir si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *