2024-06-25 22:34:17 发布
网友
我试图理解fabric是如何在一台机器上使用多个命令的。 我需要在每台主机(数千台主机)上运行几个命令,并想知道什么是最好的。在
使用多个管路:
res_1 = run(command_1) res_2 = run(command_2) ... ... res_n = run(command_n)
或者:
我想知道的是fabric如何处理多个运行,它是打开多个会话还是在同一个会话中执行所有命令?在
无论您是使用多个run调用,还是使用&&进行单个run调用,AFAIK,fabric将只打开一个网络连接。两者的区别在于每个新的run在不同的环境中执行。例如,你可以试试这个。在
run
&&
run('ls') run('cd /tmp/') run('ls')
两次它都会显示你的主目录列表。但如果你试试这个
它将第一次显示主目录,后面是/tmp/的列表。因此,如果您希望从一个命令保留到另一个命令,您应该执行run('cmd1 && cmd1')操作,但是如果您不介意,则应该使用多个run调用。在
/tmp/
run('cmd1 && cmd1')
这两种方法之间的重要区别在于,第一种方法将运行所有命令,而不管前一个命令的退出状态如何;然而,第二种方法只在command_2没有返回错误的情况下执行commmand_2,因此这取决于您是否想要这种行为或另一种行为。在
无论您是使用多个
run
调用,还是使用&&
进行单个run
调用,AFAIK,fabric将只打开一个网络连接。两者的区别在于每个新的run
在不同的环境中执行。例如,你可以试试这个。在两次它都会显示你的主目录列表。但如果你试试这个
^{pr2}$它将第一次显示主目录,后面是
/tmp/
的列表。因此,如果您希望从一个命令保留到另一个命令,您应该执行run('cmd1 && cmd1')
操作,但是如果您不介意,则应该使用多个run
调用。在这两种方法之间的重要区别在于,第一种方法将运行所有命令,而不管前一个命令的退出状态如何;然而,第二种方法只在command_2没有返回错误的情况下执行commmand_2,因此这取决于您是否想要这种行为或另一种行为。在
相关问题 更多 >
编程相关推荐