如何在Ruby中触发shell脚本并在后台运行(异步)?
我有一个名为test.sh的shell脚本。 如何从Ruby触发test.sh?
我希望test.sh作为后台进程运行,这意味着在Ruby中它是一个ansync调用。
还需要将STDERR和STDOUT写入特定文件。
有任何想法吗?
@ TanzeebKhalili的答案有效,但您可能会考虑Kernel.spawn() ,它不会等待进程返回:
pid = spawn("./test.sh") Process.detach(pid)
请注意,根据文档,无论是使用spawn()
还是手动fork()
和system()
,都应该在退出之前获取PID和Process.detach()
或Process.wait()
。
关于重定向标准错误和输出,使用spawn()
很容易:
pid = spawn("./test.sh", :out => "test.out", :err => "test.err") Process.detach(pid)
试试这个:
Process.fork { system "./test.sh" }
不适用于Windows,您可以使用线程。