GNU/Linux >> Linux Esercitazione >  >> Linux

Script Ruby come servizio

Pubblicando la mia risposta dopo più di un decennio Original Poster ha posto la domanda.

Per prima cosa, creiamo un semplice script ruby, che eseguirà 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

Puoi eseguire lo script in background aggiungendo la e commerciale:

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

Per avviare automaticamente questo script e riavviarlo ogni volta che è stato interrotto o è andato in crash, creeremo un servizio.

# 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

Ora copiamo questo file di servizio nella directory systemd:

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

Infine, usa enable comando per garantire che il servizio venga avviato all'avvio del sistema:

sudo systemctl enable mydaemon.service

Il servizio può essere avviato, interrotto o riavviato utilizzando lo standard systemd comandi:

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

Fonte


RAA - deamons è uno strumento molto utile per creare demoni unix da script Ruby.


In realtà ho trovato un modo molto migliore per farlo usando gli script Ruby.

Ecco come l'ho fatto:

Prima di tutto, ho installato il demone

gem install daemons

Poi ho fatto:

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

Quindi creo un file chiamato runner.rb, in cui posso chiamare i miei script come:

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

Daemons è una grande gemma!


Linux
  1. Il modo "corretto" per verificare se un servizio è in esecuzione in uno script?

  2. Servizio del sistema operativo Linux 'dhcpd'

  3. Servizio del sistema operativo Linux "anacron"

  4. Servizio del sistema operativo Linux "iptables"

  5. Sistema operativo Linux Servizio "rete"

Come configurare l'esecuzione automatica di uno script Python utilizzando Systemd

Come eseguire lo script della shell come servizio SystemD in Linux

Script contro una riga?

Servizio Systemctl scaduto durante l'avvio?

Come eseguire lo script Python come servizio?

Esegui lo script bash come demone