1

我正在部署Sharetribe应用程序。按照他们的文档,我需要运行bundle exec rake RAILS_ENV=production jobs:work。问题是执行此命令后,我需要关闭SSH连接,为此我必须退出jobs进程。

如何bundle exec rake RAILS_ENV=production jobs:work在后台运行?

4

3 回答 3

1

在启动时将背景整合到污点执行器中。

为此,我们将使用 [systemd]。

  1. 在/etc/systemd/system/中创建文件YourJob.service。#该文件将用于定义要在后台执行的代码。
  2. 运行命令“启用 systemctl YourJob.service”
  3. 在任何此类目录“/home/marketuser/bin/rakejob.sh”C 中创建一个 .sh 脚本文件
  4. 使用命令“status systemctl tmarketjob.service”检查 YourJob.service 服务的执行状态
  5. 重新启动服务器。

文件结构。

# 你的工作服务

    [Unit]
    Description = Tmarket background processing daemon program

    [Service]
    Type = Single
    ExecStart = / home / marketuser / bin / rakejob.sh
    Restart = always

   [Install]
   WantedBy = graphical.target

# Rakejob.sh

!/bin/bash

export PATH = / home / marketuser / bin:     /home/marketuser/.nvm/versions/node/v6.1.0/bin: /home/marketuser/.rbenv/plugins/ruby-build/bin: / home / marketuser /. rbenv / shims: /home/marketuser/.rbenv/bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games
cd / var / www / tmarket /
exec rake jobs: work

[-] PATH 是通过执行控制台命令'echo $ PATH' 获得的 tmarket 是我们的 RoR 应用程序的目录

于 2016-11-03T22:10:05.823 回答
0

请在您的 Gemfile 中包含 gem “守护程序”。并使用以下命令

RAILS_ENV=生产脚本/delayed_job 开始

有关更多信息,请查看延迟作业 gem

于 2016-03-09T06:51:00.040 回答
0

您可以像任何其他控制台命令一样运行它,方法是使用 nohup 或在命令末尾添加 & 符号,但请注意,如果您关闭终端选项卡,带有 & 的解决方案将停止。

于 2016-02-09T10:42:16.927 回答