LoginSignup
5
5

More than 5 years have passed since last update.

Capistranoを使ってサーバ上にてバックグラウンドプロセスを実行させる

Last updated at Posted at 2013-02-08

UnixライクなOSの場合、プロセスをバックグラウンドに回すためには行末にアンパサンド(&)を付与します。

Capistranoからも同様にアンパサンドを付与すれば、と思いましたが、それだけではダメでした。

task :example do
  run 'sleep 5 &' # これじゃダメ
end
$ cap example
  * 2013-02-08 17:18:08 executing `example'
  * executing "sleep 5 &"
    servers: ["my-server"]
    [my-server] executing command
    command finished in 5157ms

下記の方法で大丈夫。

task :example do
  run 'sh -c "sleep 5 &" >& /dev/null' # リダイレクトさせる(/dev/nullである必要はない)
end
$ cap example
  * 2013-02-08 17:25:32 executing `example'
  * executing "sh -c 'sleep 5 &' >& /dev/null"
    servers: ["my-server"]
    [my-server] executing command
    command finished in 189ms

アプリケーションサーバにpumaを使っているんですが、rubygems.orgから手に入るpuma-1.6.3だと、デーモン化のためのオプションがないため、アンパサンドを付与してやるのですが、まあそれでいろいろやってたら見つけたという経緯です。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5