如何在 Rails 的 Amazon EC2 实例上 运行 长时间 运行ning 作业?
How to run a long running job on Amazon EC2 instance in Rails?
我正在使用 resque gem,并且我正在 运行 通过以下命令执行作业:
rake resque:work QUEUE='*'
但问题是:由于我与远程服务器的 SSH 连接断开,或者我关闭了正在 运行 进程 rake resque:work QUEUE='*'
的 SSH 会话 window,它停止了 运行完成任务。
我希望有一种方法可以让作业 运行 独立进行:无需通过 SSH 保持连接。有没有办法,或者我应该按照这个过程来完成我的要求?
为此,您可以 运行 在后台进行 rake 任务。有多种方法可以实现这一点。其中两个在这里:
使用守护进程,您可以 运行 在后台执行 rake 任务。这是 link for what is daemon. Here is link,如何为 rails rake 任务实现此目的。附加 &
到 rake 任务是我的首选方式。
单独实施 cron 以 运行 rake 任务。
在后台 运行 任务的另一种方法:screen
。它会根据需要创建尽可能多的 shell 会话,并且它们可以从您的初始会话中分离出来。
运行:
screen
(您将进入新的 shell 会话)
/path/to/your/script > /path/to/log_file
Ctrl+A, Ctrl+D
(这里你 return 到初始 shell 会话,而你启动脚本的会话将继续 运行)
您可以通过tail -f /path/to/log_file
查看进度,注销并重新登录。到 return 到分离会话 运行 screen -r
.
如果您没有安装 screen
运行 yum install screen
。不确定 Ubuntu,也许会是 apt-get install screen
。 运行 man screen
了解更多详情。
我正在使用 resque gem,并且我正在 运行 通过以下命令执行作业:
rake resque:work QUEUE='*'
但问题是:由于我与远程服务器的 SSH 连接断开,或者我关闭了正在 运行 进程 rake resque:work QUEUE='*'
的 SSH 会话 window,它停止了 运行完成任务。
我希望有一种方法可以让作业 运行 独立进行:无需通过 SSH 保持连接。有没有办法,或者我应该按照这个过程来完成我的要求?
为此,您可以 运行 在后台进行 rake 任务。有多种方法可以实现这一点。其中两个在这里:
使用守护进程,您可以 运行 在后台执行 rake 任务。这是 link for what is daemon. Here is link,如何为 rails rake 任务实现此目的。附加
&
到 rake 任务是我的首选方式。单独实施 cron 以 运行 rake 任务。
在后台 运行 任务的另一种方法:screen
。它会根据需要创建尽可能多的 shell 会话,并且它们可以从您的初始会话中分离出来。
运行:
screen
(您将进入新的 shell 会话)
/path/to/your/script > /path/to/log_file
Ctrl+A, Ctrl+D (这里你 return 到初始 shell 会话,而你启动脚本的会话将继续 运行)
您可以通过tail -f /path/to/log_file
查看进度,注销并重新登录。到 return 到分离会话 运行 screen -r
.
如果您没有安装 screen
运行 yum install screen
。不确定 Ubuntu,也许会是 apt-get install screen
。 运行 man screen
了解更多详情。