10 年以上経った後に私の回答を投稿 元の投稿者は質問をしました。
まず、無限ループを実行する単純な ruby スクリプトを作成しましょう:
# mydaemon.rb
$stdout.reopen('/home/rmishra/mydaemon.log', 'a')
$stdout.sync = true
loop.with_index do |_, i|
puts i
sleep(3)
end
アンパサンドを追加すると、バックグラウンドでスクリプトを実行できます:
/home/rmishra$ ruby mydaemon.rb &
[1] *pid*
このスクリプトを自動的に開始し、停止またはクラッシュしたときに再起動するには、サービスを作成します。
# 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
それでは、このサービス ファイルを systemd ディレクトリにコピーしましょう:
sudo cp mydaemon.service /lib/systemd/system -v
最後に、enable
を使用します コマンドを実行して、システムが起動するたびにサービスが開始されるようにします:
sudo systemctl enable mydaemon.service
サービスは、標準の systemd
を使用して開始、停止、または再開できます コマンド:
sudo systemctl status mydaemon
sudo systemctl start mydaemon
sudo systemctl stop mydaemon
sudo systemctl restart mydaemon
ソース
RAA - deamons は、ruby スクリプトから UNIX デーモンを作成するための非常に便利なツールです。
実際、Ruby スクリプトを使用することで、これを行うためのはるかに優れた方法を見つけました。
これが私がやった方法です:
まず、デーモンをインストールしました
gem install daemons
それから私は:
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
次に、次のようなスクリプトを呼び出すことができる runner.rb というファイルを作成します。
require "/var/www/rails/my_project/config/environment"
Post.send('details....')
Daemons は素晴らしい逸品です!