No.5ベストアンサー
- 回答日時:
#4です。
fork & execが定番のやり方になります。
以下のようなスクリプトを作ってください。
ファイル名:test_fork.rb
--------------------------------
def start_proc(ruby_script)
pid = fork do
exec("/usr/bin/ruby" + " " + ruby_script)
end
end
print "main start\n"
start_proc("test1.rb")
start_proc("test2.rb")
print "main end\n"
-----------------------------------
start_procはruby_scriptを引数として、そのスクリプトをバックグラウンドで起動します。
(そのスクリプトの終了を待ちません)
テスト用に以下の2つのスクリプトを起動しますので、以下のスクリプトも作成してください。
ファイル名:test1.rb
------------------------------
print "test1.rb start\n"
sleep(10)
print "test1.rb end\n"
-------------------------------
ファイル名:test2.rb
-----------------------------
print "test2.rb start\n"
sleep(5)
print "test2.rb end\n"
-------------------------------
ruby test_fork.rb を実行します。
実行結果は以下のようになります。
-------------------------------------
main start
main end
test1.rb start
test2.rb start
test2.rb end
test1.rb end
-------------------------
test_fork.rbはテスト用スクリプトを起動後、直ちに停止しています。
尚、今回、start_proc("test1.rb")はフルパスでパス名を指定していません。(手抜きです。)
実際に運用される場合は、start_proc("/aaa/bbb/test1.rb")のようにフルパスで指定してください。
当方の環境は以下の通りです。
centos 6.5
ruby 1.9.3p551
ありがとうございました。
サンプルスクリプトまで教えて頂き、非常に助かりました。
おかげさまで実装&正常稼働確認をする事ができました。
本当にありがとうございました。
No.4
- 回答日時:
具体的な回答を希望されるなら、OSの名称(windows、linux等)、rubyのバージョン
を提示されたほうが、良いでしょう。そのほうが、より良い回答が得られる可能性があります。
ご指摘ありがとうございます。
おっしゃる通りだと思います。
OSはRHEL7
rubyのバージョンは、「ruby 2.0.0p598」です。
やりたい事としては、
Linux上で稼働しているデーモンがあるトリガーによりrubyのプログラムを起動しているのですが、
そのrubyのプログラムの処理に時間のかかる部分があり、
大量に起動トリガーが発生した場合に、デーモンでさばききれない事象が発生しました。
それを回避するために、処理を分割し、どんどん子プロセスを生成し、親プロセスは終了し、
デーモン側でプログラム起動が滞らないようにしようと考えています。
よろしくお願い致します。
No.3
- 回答日時:
Unix的には fork&exec.
ご回答ありがとうございました。
御礼おそくなりました。
fork&execを恥ずかしながら知りませんでした。
参考になりました。
No.2
- 回答日時:
No.1
- 回答日時:
system("path/script.rb")
または、system("ruby path/script.rb")
でどうですか。
http://docs.ruby-lang.org/ja/2.3.0/class/Kernel. …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Ruby MacBookAir起動時にRubyソースコードをコマンドラインで実行するには? MacのOS起動時 1 2022/04/18 01:55
- Windows 10 バッチファイルでのエクスプローラー終了 1 2022/05/30 14:32
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、写真のプログラムをどう直せ 2 2022/07/09 21:13
- Ruby ruby 1 2022/06/10 13:31
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- Windows 10 win 10 でのstartup program を削除したい 3 2022/04/29 09:21
- その他(プログラミング・Web制作) Windows上のプログラム。「予め決められた時刻に自分で起動して処理して自分で終了する」って可能? 3 2023/01/04 14:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビーリアルのユーザー名を変え...
-
パソコンのスクリーンセーバー...
-
(再質問)エクセルのマクロボ...
-
英数字を含む文字列(0-9,A-Z)...
-
講義でわからないのですが以下...
-
文字コードのエラー
-
WinSCPで画像のように puttyを...
-
パイソンのクラスについて
-
教えてください
-
pythonエラー
-
Accessで文字列のバイト数読み込み
-
初心者プログラミング
-
VBScriptでExcel(2019)上のデー...
-
Ruby on railsをrails sで立ち...
-
C言語の入力した文字を反転させ...
-
エクセルvbaでチェックボックス...
-
プログラミング
-
WIN11にオフイスを複数入れるこ...
-
VBA
-
パイソンエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
RubyでNo such file or directo...
-
Ruby interpreter (CUI) 2.2.3 ...
-
Rubyでローカルにあるファイル...
-
Rubyでpdfファイルを読み込む方法
-
RubyでexeファイルをつくるExer...
-
Ruby / passenger のインストー...
-
プログラミング講師はまだ需要...
-
小文字wと大文字Wの区別
-
初心者 パイソンプログラム
-
VB.NETで階乗を求めるプログラ...
-
CかC++どちらを覚えるべきですか?
-
フォルダー名の大文字小文字
-
web上のhtmlファイルから文字デ...
-
Ruby on Railsでボタンをクリッ...
-
プログラミング言語で大文字と...
-
Filterで大文字、小文字の区別
-
VBとフィボナッチに明るい方、...
-
COBOLのIFの入れ子について
-
COBOL計算
-
GoTo文について
おすすめ情報