Memposting jawaban saya setelah lebih dari satu dekade, Poster Asli mengajukan pertanyaan.
Pertama, mari buat skrip ruby sederhana, yang akan menjalankan loop tak terbatas:
# mydaemon.rb
$stdout.reopen('/home/rmishra/mydaemon.log', 'a')
$stdout.sync = true
loop.with_index do |_, i|
puts i
sleep(3)
end
Anda dapat menjalankan skrip di latar belakang dengan menambahkan ampersand:
/home/rmishra$ ruby mydaemon.rb &
[1] *pid*
Untuk memulai skrip ini secara otomatis dan memulai ulang setiap kali dihentikan atau mogok, kami akan membuat layanan.
# 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
Sekarang, mari salin file layanan ini ke direktori systemd:
sudo cp mydaemon.service /lib/systemd/system -v
Terakhir, gunakan enable
perintah untuk memastikan bahwa layanan dimulai setiap kali sistem melakukan booting:
sudo systemctl enable mydaemon.service
Layanan dapat dimulai, dihentikan, atau dimulai ulang menggunakan systemd
standar perintah:
sudo systemctl status mydaemon
sudo systemctl start mydaemon
sudo systemctl stop mydaemon
sudo systemctl restart mydaemon
Sumber
RAA - deamons adalah alat yang sangat berguna untuk membuat daemon unix dari skrip ruby.
Saya sebenarnya telah menemukan cara yang jauh lebih baik untuk melakukannya dengan menggunakan skrip ruby.
Inilah cara saya melakukannya:
Pertama-tama, saya menginstal daemon
gem install daemons
Lalu saya melakukannya:
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
Saya kemudian membuat file bernama runner.rb, di mana saya dapat memanggil skrip saya seperti:
require "/var/www/rails/my_project/config/environment"
Post.send('details....')
Daemon adalah permata yang luar biasa!