普通情况下ruby调用系统命令行的过程是堵塞的,无论是用
system还是``或是exec。
system命令会在命令执行成功后返回true,失败返回nil
不过如果system调用的命令以&结尾,ruby进程不会被阻塞,不管前面的命令是否执行成功都会立即返回true。
所以,史上最轻量级的ruby后台任务诞生了:
system('echo "Hello" > ./system.log && sleep 5 && echo "Hooopo" > ./system.log 2>&1 &')
ps:经测试,使用``的话即使命令行后面加上&也是会阻塞ruby进程的。
`echo "Hello" > ./system.log && sleep 5 && echo "Hooopo" > ./system.log 2>&1 &`