我在我的脚本中直接使用fabric.api.local。例如,
fabric_test.py
from fabric.api import local
local('echo hello world')
local('ls')
如果我在没有任何重定向的情况下执行它,一切都很好
$ python fabric_test.py
[localhost] local: echo hello world
hello world
[localhost] local: ls
fabric_test.py test.log
如果我执行它并将输出重定向到文件,则输出的顺序混乱。 为什么?当我在某些cronjob中使用fabric并将输出发送到logfiles时,这个问题真的很烦人。
$ python fabric_test.py > test.log
$ cat test.log
hello world
fabric_test.py
test.log
[localhost] local: echo hello world
[localhost] local: ls
答案 0 :(得分:2)
这是因为,fabric基本上将您指定的任务作为单独的子进程执行。因此,子进程的输出不是结构文件的输出。这不是一个新问题,已经讨论过before,请查看以查看解决方法。