创建一个' at'脚本中的工作

时间:2014-10-14 14:57:03

标签: ruby dynamic system cron-task

在Ruby中,我需要一个脚本排队一些at个工作。进行系统调用非常简单,我可以使用反引号system%x()。但at命令必须是多行的,并且需要命令输入ctrl+d才能终止。如何动态创建at作业?

示例(Ruby):

`at #{time}\nrun_other_script.rb\n:q`

效果:

at 2014-10-14 11:30
at> run_other_script.rb
at> <EOT>

但当然我的例子不起作用。是什么?

1 个答案:

答案 0 :(得分:2)

at接受来自标准输入的输入。

w模式下使用IO::popen,您可以将输入发送到子流程:

IO.popen("at #{time}", "w") { |f|
  f.puts "run_other_script.rb"
}

您也可以使用open3模块。