UTALI

書き溜めておいた技術記事や旅行記のバックアップです。

Rubyでスクリプトをバックグラウンドで実行する

コマンドnohupを使用する。

使い方

カレントディレクトリのnohup.logに出力内容を保存する場合

nohup ruby test.rb > nohup.log &

ログを残したくない場合

nohup ruby test.rb > /dev/null 2>&1 &

このような表示が出たら成功

[1] 29761

これはバックグラウンドでプロセスID29761で動作していますよ〜という意味

一応、確認してみよう。

ps ax

ちゃんと動いてますね。

29668 ?        Ss     0:00 sshd: root@pts/0    
29679 pts/0    Ss     0:00 -bash
29761 pts/0    Sl     0:00 ruby test.rb
29763 pts/0    R+     0:00 ps ax

注意すべきこと

クローラーなどでRubyスクリプトを長時間動かすことも多いと思います。

そんなときはメモリーリークを起こさないように気をつけて設計してください。

たとえば使用しなくなった変数や要素はこまめに削除するなどです。