【问题标题】:Run Ruby script in the background在后台运行 Ruby 脚本
【发布时间】:2015-08-18 05:54:53
【问题描述】:

我有一个 Ruby 脚本,我需要在我的 Linux 机器中一直运行它。我试过nohup ruby ruby.rb&,但它似乎不起作用。

如何让脚本在后台运行?

【问题讨论】:

  • 没有。但是当我执行“nohup”时,我想我应该在输出文件中看到结果,但我没有。我只是想确保它正在运行。
  • 那么,当您最初使用 & 运行命令时,您是否获得了 PID?
  • 是的,~# nohup ruby​​ unread_mail.rb & [4] 15859
  • 好的,所以你可以运行ps -a 并验证进程是否正在运行。它不会的唯一原因是脚本本身正在终止
  • 奇怪,我也有同样的问题。为什么 Ruby 不输出而 node.js 脚本输出?我对两者都使用 nohup 和输出重定向相同的方式。 Ruby 在没有 nohup 的情况下运行良好。

标签: ruby


【解决方案1】:

查看screen,它是一个命令行实用程序。开始吧

screen

您将获得一个分离的新外壳。在那里开始你的脚本

ruby whatever.rb

然后看着它运行。然后点击 Ctrl-A Ctrl-D 你应该回到原来的 shell。您现在可以离开 ssh 会话,脚本将继续运行。稍后,登录到您的框并输入

screen -r

你应该回到分离的外壳。

如果您多次使用屏幕,您将不得不通过 pid 选择屏幕会话,这不太方便。为了简化,你可以这样做

screen -S worker

开始会话并

screen -r worker

恢复它。

【讨论】:

    【解决方案2】:

    根据您的需要:

    fork do
      Process.setsid
      sleep 5
      puts "In daemon"
    end
    puts "In control script"
    

    在现实生活中,您将不得不重新打开 STDOUT/STDERR。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-03
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多