这是可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行的命令 taktuk,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
TakTuk - 大规模远程执行部署工具
概要
达图克 [-behinsvzMP[-c 连接器] [-d 限制] [-f 文档名称] [-g 期间] [-l 登录] [-m
主机名 [-[ 参数 ... -]]][-o 流=模板] [-t 暂停] [-u 限制] [-w 尺寸] [-B
参数=表达式] [-C 分隔符] [-E 特点] [-F 文档名称] [-G 主机名 [-[ ARGS
... -]]][-L 主机名] [-I 翻译] [-O 分隔符] [-R 流=文件名] [-S 档案]
[-T 命令] [-V 小路 ] [-W 方案] [命令...]
商品描述
打笃 是一种将一个或多个命令的远程执行广播到一组的工具
一台或多台远程机器。 打笃 结合本地并行化(使用并发
部署流程)和工作分配(使用自适应工作窃取算法)以
实现两者 可扩展性 和 效率.
打笃 特别适用于涉及多台远程机器的交互任务和
并行远程执行。 这是集群管理和并行的情况
程序调试。
打笃 还为它执行的程序提供了一个基本的通信层。 这个
通信层使用由建立的通信基础设施 打笃 在它期间
部署。 它可用于 Perl 和 C 语言,并在
打笃(3)和 塔克图克通讯社(3) 分别。
配置
注意,在 打笃 选项按照命令行上给出的顺序进行解析。 这意味着
这 打笃 在期权订单方面不符合 POSIX 标准。 这很重要,因为一些
这些选项会改变后续的行为(并且只有这些 - 例如 -l 适用
跟随 -m 选项)。 的默认设置 打笃 可以通过使用
“--print-defaults”选项。 以下选项按类别按字母顺序给出
秩序。
部署 配置
-b
--开始组
开始一个新的部署组。 部署组同时充当大多数情况的上下文
选项(组内设置的选项在组外无效)并作为
部署任务调度隔离(组内部署任务不能
被其他组中部署的节点窃取)。
-c 连接器
- 连接器 连接器
定义用于联系以下远程机器的连接器命令。
-d 限制
- 动态的 限制
打开或关闭动态模式(工作窃取)以部署以下所有内容
远程机器规格。 如果“limit”为正数或为空, 打笃 使用
动态模式,其值为最大数量(0 = 无最大数量)。 一个负
“限制”的值关闭动态模式。 警告,目前使用
在同一命令行上有几个具有正值的 -d 选项。
-e
--结束组
结束部署组。
-f 文件名
--machines-文件 文件名
“filename”是包含远程机器名称的文件名(相当于
几个“-m”选项)。 在这个文件的每一行中,第一个单词被认为是一个
机器名称,其余为注释。
-l 登录
- 登录 登录
为以下主机设置登录名。 这假设连接器命令
接受“-l”选项(默认情况下 ssh 就是这种情况)。
-m 主机
- 机器 主机
“主机名”是远程机器的名称 打笃 必须部署。
“主机名”可能包含括号内指定的值列表和排除列表
(参见“主机名规范”)。 在这种情况下,将在所有
匹配的主机。 此选项后面可以跟任意数量的参数
“-[”和“-]”之间将作为远程参数传输 打笃 这
将在所有目标主机上执行。
-s
--自我传播
传播 打笃 可以通过以下连接器执行,从而消除
需要一个 打笃 在远程机器上安装。
-z
--不要自我传播
取消前面的 -s 选项。
-F 文件名
--args-文件 文件名
“文件名”是包含附加选项的文件名 打笃。 该
遇到此选项时会解析文件。
-G 主机
--网关 主机
一样 -m 主机名,除了部署的节点被视为只进
节点:它们不会被编号,也不会成为后续扩散的目标
命令。 作为例外,执行 打笃 这些节点上的命令仍然是
可以通过将它们作为部署参数 -G 选项。
-I 命令
--perl-解释器 命令
“command”是自动时用作 Perl 解释器的命令的名称
传播或使用“taktuk_perl”命令时。
-L 主机
--本地主机 主机
更改本地主机的名称,如查看 打笃.
-S 档
- 发送文件 档
给 打笃 远程连接成功后要发送的文件列表。 用
小心,因为它会减慢部署(文件在结束之前传输
部署)。 预期用途不是传输应用程序数据文件(而是
使用“put”命令传输此类文件)。 这个选项应该用于传输
从远程节点执行进一步连接所需的文件。 “文件”
是逗号分隔的“local_file:remote_file”对列表。 关于转让
本身,它的行为类似于“放置”命令。
-T 命令
--taktuk-命令 命令
“命令”是名称 打笃 命令(默认为 $0,用于启动的名称
打笃)。 这是连接后用于启动远程的命令 打笃 引擎。
请注意,使用“-s”选项时,此开关的效果无效。
-V 名单
--路径值 名单
将 PATH 环境变量设置为给定的列表(像往常一样,冒号分隔
目录列表)在远程主机上 打笃 连接。 这表现得很
早,甚至在连接时对“taktuk”或“perl”调用也考虑在内
时间。
指挥 LINE 解析 配置
-C 分隔符集
--命令分隔符 分隔符集
替换分隔连续字符的默认字符集 打笃 命令。
-E 字符
--转义字符 字符
定义一个转义字符,可用于保护任何后面的字符
打笃 解释。 这种保护几乎适用于整个 打笃 命令
线。
-O 分隔符集
--选项分隔符 分隔符集
替换阅读时分隔连续单词的默认字符集
文件中的选项和命令(使用“-F”开关)。
I / O 配置
-o 流=模板
--输出模板 流=模板
为给定设计的输出流之一设置输出模板规范
姓名。 当仅提供流名称(没有模板)时,这将禁用流。
可用的流包括:
“连接器”(来自连接器命令的错误)
此流包含由连接器输出到 stderr 的 $line 信息
命令。 相关字段包括 $host、$peer 和下面列出的其他字段。
“错误”、“输出”(远程执行命令的错误和输出)
这些流包含在执行命令输出到标准输出的 $line 信息中
或 stderr(分别)。 相关字段包括 $host, $command, $pid 等
下面列出。
“信息”(一般信息,如帮助摘要或版本)
此流包含 taktuk 输出的 $line 信息以响应
诸如“帮助”或“版本”之类的命令。
“消息”(来自正在运行的进程的消息)
此流的每个输出都包含在 $line 中,一条消息与目标“输出”一起发送
(通过 打笃 带外通信设施)由某些进程启动
运用 打笃 命令。 此流的相关字段包括 $from 和 $to 以及
下面列出的其他人。
“状态”(TakTuk 实例的内部状态)
此流在 $line 中包含与某些匹配的状态更改代码 打笃 事件。
代码如下:
0 - TakTuk 已准备就绪
1 - TakTuk 已编号
2 - TakTuk 终止
3 - 连接失败
4 - 连接初始化
5 - 连接丢失
6 - 命令开始
7 - 命令失败
8 - 命令终止
9 - 编号更新失败
10 - 管道输入开始
11 - 管道输入失败
12 - 管道输入终止
13 - 文件接收开始
14 - 文件接收失败
15 - 文件接收终止
16 - 文件发送失败
17 - 无效目标
18 - 无目标
19 - 消息已送达
20 - 目的地无效
21 - 目的地不再可用
22 - 等待完成
23 - 等待减少完成
可以在模板中使用函数 event_msg($) 将此代码转换为
描述事件的字符串。 相关字段包括 $host, $position,
$rank、$count 和下面列出的其他人。
“状态”(命令退出状态)
该流在 $line 中包含已执行命令的返回代码。 相关的
字段包括 $host、$pid 和下面列出的其他字段。
“taktuk”(内部消息、警告和错误)
此流包含在 $line 中输出的错误、警告和调试消息 打笃
本身。 相关字段包括 $line_number、$package 和下面列出的其他字段。
模板是一个 Perl 表达式,最终应该计算为字符串
显示。 在规范中,可能会使用某些变量,具体取决于
有关流:
$command(不适用于“taktuk”或“info”)
生成输出的命令行执行。
$ count
总数 打笃 实例。
$停产
空字符串或换行符取决于命令输出结束的字符。
$filename(仅限“taktuk”)
文件中的一个 打笃 诊断功能已被调用。
$from(仅“消息”)
的逻辑编号 打笃 已发送消息的实例。
$主机
执行当前的主机名 打笃 例
$init_date(仅限“连接器”和“状态”)
自 1 年 1970 月 XNUMX 日以来的时间(以秒为单位) 打笃 例
完成其初始化(包括ssh连接时间和自传播
如果有的话)。
$level(仅限“taktuk”)
调用的诊断函数的级别。
$level_name(仅限“taktuk”)
与调用的诊断函数的级别相关联的名称。
$行
命令输出或传递给诊断功能的原始数据,任何
删除尾随换行符(参见 $eol)。
$line_number(仅限“taktuk”)
行号 打笃 诊断功能已被调用。
$package(仅“taktuk”)
其中一个包 打笃 诊断功能已被调用。
$peer(仅限“连接器”和“状态”)
连接器命令为其输出信息的远程机器。
$peer_position(仅“连接器”和“状态”)
在远程主机的命令行上的位置。 这个位置表示为
命令行上表示的主机层次结构中的路径(点分隔
每个叠瓦层的位置编号)。
$peers_given(仅“状态”)
已提供给远程对等方的远程节点的空格分隔列表
部署(无论他们的部署状态如何)。 每个远程节点被指定为
冒号分隔的一对由它的主机名和它在命令行上的位置组成。
当事件输出到流时,这个变量只有一个有意义的值
“状态”是连接丢失(事件编号 5)。
$pid(不适用于“taktuk”或“info”)
执行的命令行的 pid(产生输出)。
$位置
在当前主机的命令行上的位置。 这个位置表示为
命令行上表示的主机层次结构中的路径(点分隔
每个叠瓦层的位置编号)。
$排名
的逻辑数 打笃 收集输出的实例。
$reply_date(仅限“连接器”和“状态”)
自 1 年 1970 月 XNUMX 日以来连接器命令回复的时间(以秒为单位)
本地的 打笃 实例(注意这不包括初始化
发生在远程之前的交换 打笃 被认为是功能性的)。
$start_date(“输出”、“错误”、“连接器”和“状态”)
自 1 年 1970 月 XNUMX 日命令开始以来的时间(以秒为单位)(仅取
调用后 叉子()).
$init_date(仅限“连接器”和“状态”)
自 1 年 1970 月 XNUMX 日以来的时间(以秒为单位) 打笃 完成了
初始化。
$stop_date(仅限“连接器”和“状态”)
自 1 年 1970 月 XNUMX 日以来命令终止的时间(在
关闭其标准输出)。
$to(仅“消息”)
的逻辑编号(或此类编号的集合) 打笃 实例
信息已发送。
$类型
输出流的名称(连接器、错误、输出等)。
$用户标量
一个标量,包的全局标量,最初初始化为 undef,用户是
免费用于任何目的。
在一天结束时,对相关的每一行的规范进行评估
流并将结果打印在根节点上。 请注意,必须添加换行符
如果需要,在模板中明确显示为“\n”。
警告:如果 Perl 语法不正确,请注意您的规范
将显示可怕的编译错误消息并 打笃 执行将失败。
-R 流=文件名
--输出重定向 流=文件名
将给定的流输出重定向到给定的文件(位于根节点)。 注意
给定的文件名符合 Perl 开放语法:例如,一个人可能会重定向
到文件描述符 X 使用名称 ">&=X"。 有关更多详细信息,请参阅“-o”选项
流输出。
性能 TUNING 配置
-B 参数=表达式
--worksteal-行为 参数=表达式
注意:此功能应被视为实验性的,可以从
未来的版本。 通过设置微调工作窃取算法的行为
Perl 表达式的一些参数。 这些 Perl 表达式可以使用变量
$last_given 和 $available 分别等于给定的任务数
窃取者上次窃取的信息以及剩余部署任务的总数。
可用参数有:
初始
分配给远程的任务数 打笃 实例第一次发送
窃取到本地主机的请求。
发展
分配给远程的任务数 打笃 实例每次执行
第一次窃取到本地主机后。
限制
由“增长”评估得出的值的上限。
-g 为期
--时间粒度 为期
设置为“持续时间”(以秒为单位)超时检查之间的最大间隔(通常是
检查更频繁:在收到每条消息时都会进行超时检查)。
-n
--无编号
禁用 打笃 逻辑编号和变量“TAKTUK_COUNT”和“TAKTUK_RANK”
未在执行的命令中定义。 这具有去除全局的优点
在部署结束时发生同步并使部署更加
高效。
警告:仅在任何远程节点规范(“-m”或“-f”)之前使用此选项
否则你可能会遇到严重的同步问题 打笃。 运用 打笃 观点-
与此选项一起的对点通信将失败并产生 打笃 警告。
-t 超时
- 暂停 超时
为以下连接器设置超时(以秒为单位)(0 = 无超时)。 请注意
此选项会覆盖连接器命令(例如“ssh”)的超时。 什么时候
延迟到期,连接器命令被简单地杀死。
-u 限制
--缓存限制 限制
限制内存字节数 打笃 可能用作内部写入缓冲区。 对于大多数
用户,设置这样的限制是一个坏主意:在一些罕见的情况下,它可能会导致
陷入僵局 打笃 (由应用程序和
打笃 本身)。 将此选项设置为负值将禁用限制(默认)。
尽管如此,如果你使用 打笃 传输大文件,因为 I/O 带宽
系统不同部分的差异, 打笃 内存使用可能会变得太大并且
当系统开始交换时,性能可能会严重下降。 在这样的
情况下,限制内部缓存的大小将保持 打笃 在主内存中
并保持性能。
-w 尺寸
- 窗户 尺寸
将初始窗口设置为给定的大小(= 管道宽度)。
-W 方案
--窗口适应 方案
将windows适配方案设置为number(默认为0,0:无适配,1:
实施中)。
其他条款 配置
-M
- 我的
使下一个选项成为本地(不继承)。 这意味着设置了下一个选项
仅适用于本地主机,不会传播给孩子 打笃 实例。 没有
如果下一个选项已经是本地选项,则效果。
-h
- 帮帮我
打印一个简短的描述 打笃 屏幕上。
-i
- 交互的
军队 打笃 即使在命令上给出了一些批处理命令之后,也可以交互模式
线。
-v
- 版
打印 打笃 版。
-P
--打印默认值
打印使用的默认设置 打笃 (考虑到环境变量
帐户)。
内部 配置
这些选项对大多数用户没有用。 它们要么被内部使用 打笃
本身或用于开发目的。
-p 包裹名字
--打印包 包裹名字
打印从 taktuk 代码中提取的包“packagename”的内容
执行。
-r
--非根
当前 打笃 实例不是根节点。 这是一个内部开关使用
产生的 打笃 实例。 这通常对大多数用户没有用。
-D 范围=级别
-调试 范围=级别
为“范围”设置调试级别 (1..4)。 “范围”可能是一个 打笃 包名或
“默认”和最低级别的输出越详细。
指令
选项解析后, 打笃 期望在剩余的部分上有一些命令
命令行(批处理模式)或标准输入(交互模式)。 这些命令是
要执行的操作 打笃 使用期间建立的逻辑网络基础设施
部署。 默认情况下,命令可能以 ; 分隔。 或换行符。 对于所有的
命令,可以使用任何非歧义前缀代替它们的全名。 在互动
模式, 打笃 支持“readline”(历史、命令行编辑),如果安装在
你的系统。
什么时候 打笃 命令接受参数,它们应该包含在匹配的分隔符中
(下面用*表示)。 换句话说, * 可能被任何非字母数字替换
字符或由一对匹配的大括号、方括号或圆括号组成。 这些分隔符必须
与其内容分开(使用选项分隔符)。 如果参数包含一个
结束分隔符前面有一个分隔符,那么转义它可能是个好主意
(见 -E 选项)或保护整个参数字符串(如果在命令行上给出)。
Taktuk 理解以下命令:
[ 集 规范 ] 命令
将命令的执行发送给属于给定集合的所有对等点。 更多
有关 set 规范的详细信息,请参阅“SET AND TARGETS 规范”部分。
播放 命令
在所有远程对等方(不包括节点)上广播命令的执行
启动广播)。
沮丧 命令
将命令的执行传播到启动该节点的所有子节点上
垂头丧气(不包括它自己)。
EXEC 参数 * 命令行 *
在本地机器上执行“命令行”。 执行的输入/输出是
多路复用并转发给 打笃 根。 该命令接受可选参数
启用由超时触发的回调附加到执行
命令。 有关更多详细信息,请参阅“执行参数”部分。
得到 * 源 * * 目标 *
将 (a) 远程源(存在于远程节点上)复制到
节点执行此命令。 源和目的地的类型非常相似
“cp -r”命令接受的那些(即文件或目录)。 这个命令也
使用其参数执行某种魔法:存在 shell 环境变量
在源或目标名称中被替换为它们各自的值
远程和本地节点。 此外,变量 $host、$rank 和 $position
远程节点(与 -o option) 也可以在两个名称中使用。
帮助
打印非常简洁 打笃 帮助。
输入 [ 目标 目标 ] * 数据 *
输入 [ 目标 目标 ] data * 数据 *
将给定的数据作为输入发送到在本地机器上执行的命令中
由给定的目标指定。 如果没有给出目标,则将数据发送给所有
命令。 有关目标的更多详细信息,请参阅“设置和目标规范”
输入 [ 目标 目标 ] 关闭
按照指定关闭在本地机器上执行命令的输入描述符
通过给定的目标。 如果没有给出目标,则关闭所有命令的输入。
输入 [ 目标 目标 ] 文件 * 文档名称 *
发送文件的内容(必须是执行输入文件的节点的本地内容)
作为给定指定的本地机器上正在执行的命令的输入
目标。 如果未给出目标,则将数据发送到所有命令。
警告:这个命令不是原子的。 如果您设法以某种方式启动输入文件
来自两个不同的命令 打笃 例如,数据可能会交错。 在
在这种情况下,您应该同步两个实例。 这不是必需的,当
仅从根节点传播文件。
输入 [ 目标 目标 ] 线 * 数据 *
发送带有附加换行符的给定数据作为正在执行的命令的输入
给定目标指定的本地机器。 如果没有给出目标,则数据为
发送到所有命令。
输入 [ 目标 目标 ] 管 * 文档名称 *
将参数视为文件(必须是执行输入的节点的本地文件)
管道)其行为与管道相同:数据可以连续到达。 打笃 加
它作为其输入通道之一,并在可用时将数据作为输入发送到命令。 如果
给定,目标指定数据要发送到哪个命令,否则为
发送到所有命令。
杀 [ 目标 目标 ]
将给定的信号发送到本地命令进程组。 如果没有发出信号,
发送一个 TERM 信号(信号 15)。 如果给定,则目标指定要执行的命令
要发送信号,否则发送到所有命令。 有关更多详细信息
目标,请参阅“设置和目标规范”
消息 [ 目标 目标 ] * 数据 *
消息 [ 目标 目标 ] data * 数据 *
将给定的数据作为消息发送给在本地机器上执行的命令
由给定目标指定(见 打笃(3)和 塔克图克通讯社(3) 欲知更多详情
消息)。 如果没有给出目标,则数据被发送到第一个执行命令的命令
接收且尚未被另一条消息定位。 有关目标的更多详细信息,
请参阅“设置和目标规范”
消息 [ 目标 目标 ] 文件 * 文档名称 *
发送文件的内容(必须是执行消息的节点的本地文件)
文件)作为在本地机器上执行的命令的消息,由
给定目标(见 打笃(3)和 塔克图克通讯社(3) 有关消息的更多详细信息)。 如果不
给定目标,数据被发送到执行接收的第一个命令,而不是
已被另一条消息定位。
警告:这个命令不是原子的。 如果您设法以某种方式启动消息文件
来自两个不同的命令 打笃 例如,数据可能会交错。 在
在这种情况下,您应该同步两个实例。 这不是必需的,当
仅从根节点传播文件。
消息 [ 目标 目标 ] 线 * 数据 *
将给定数据和附加换行符作为消息发送给正在执行的命令
在给定目标指定的本地机器上(请参阅 打笃(3)和 塔克图克通讯社(3)
有关消息的更多详细信息)。 如果没有给出目标,则将数据发送到第一个
执行接收且尚未被另一消息定位的命令。
消息 [ 目标 目标 ] 管 * 数据 *
将参数视为文件名(必须是执行输入的节点的本地
管道)其行为与管道相同:数据可以连续到达。 打笃 加
它作为其输入通道之一,并在可用时将数据作为消息发送给命令
(见 打笃(3)和 塔克图克通讯社(3) 有关消息的更多详细信息)。 如果给出,则
target 指定数据要发送到哪个命令,否则发送到
执行接收的第一个命令,并且尚未被另一条消息作为目标。
网络
网络 州
打印当前 打笃 部署树。 括号中的数字与同行排名相匹配
在逻辑上 打笃 编号和对等准备状态。 如果部署不是
完成后,打印的树将显示“connecting ...”叶子。
网络 取消
取消所有正在进行的连接。 因此,这会导致立即启动
可能的编号 打笃 实例和执行 打笃 命令。
网络 重新编号
完全重新计算逻辑编号 打笃 实例。 这是特别
在初始编号后向部署的网络添加新节点时很有用。
网络 更新
更新逻辑编号 打笃 不改变现有的实例
数字。 并不总是成功 打笃 使用深度优先方案进行编号。
为树的每个节点在流“状态”中发送一个事件 9
在保持的同时更新 打笃 编号方案。 这在添加时特别有用
初始编号后将新节点添加到已部署的网络。
选项 名称 * 值 *
选项 * 线 *
要么更改给出名称的单个选项(第一种形式),要么解析一个
执行此命令的节点上的附加选项行(第二种形式)。 看
打笃 更多详细信息的选项,名称在第一种形式中可以是短的或长的。
警告:新节点添加到 打笃 使用此命令的网络没有编号。
需要进一步使用网络重新编号或更新才能获得 打笃 合乎逻辑的
编号。
放 * 源 * * 目标 *
将本地源(存在于执行此命令的节点上)复制到目标
作为命令前缀给出的所有远程节点。 来源的类型和
目的地与“cp -r”命令(即文件或
目录)。 此命令还通过其参数执行某种魔术:shell
源或目标名称中存在的环境变量被替换为它们的
本地和远程节点上的相应值。 此外,变量 $host,
本地节点的 $rank 和 $position(与 -o 选项)也可以
在两个名称中使用。
同步 命令
强制给定命令等待部署完成、节点编号和
执行前的先前命令。 这对于像这样的全局命令很有用
不等待节点编号的“广播”。 相反,多播命令
(那些使用集合规范作为前缀的)等待节点编号和
完成之前的命令。 如果有疑问,请始终使用“同步”之前
“广播”、“向下广播”或“等待减少”。
taktuk_perl * 参数 *
在本地节点上分叉一个 perl 解释器,就像命令“exec perl
参数”已被使用。不同之处在于这个解释器以前是
使用包含点对点通信例程的“taktuk”包获取
(“TakTuk::send”和“TakTuk::recv”,见 塔克图克通讯社(3))。 警告:由于
分析此命令参数的解析器的局限性,您必须
给出参数(即使是空的)并使用“--”如果你给 perl 任何选项
解释器(即使你只给它选择)。
版本
打印 打笃 版。
退出
退出 打笃 引擎并关闭已建立的逻辑通信网络
在部署过程中。
等待 目标 目标
在本地等待(暂停执行以下命令) 打笃 实例为
根据给定的目标完成一些本地过程。 这个目标可能
是除“输出”之外的任何目标规范。 有关目标的更多详细信息,请参阅“SET
和目标规范”。
等待 减少 目标 目标
只能在根节点中使用。 等待(暂停执行以下
命令)用于完成所有已部署的某些进程 打笃 实例
取决于给定的目标。 该目标可以是任何目标规范,除了
“输出”。 请注意,与简单的“等待”命令相反,此命令是
以与“广播”相同的方式同步。 因此,它应该显式同步
如果与非广播命令混合(否则它将在它们之前执行)。
EXEC 有无库存
这款 打笃 命令“exec”接受可选参数。 这些参数用于
为命令指定目标 ID,或将超时触发的操作附加到
命令执行。 “exec”命令接受任意数量的参数。 这些参数
使用以下语法从左到右解释:
目标 折扣值
附加(数字)值作为执行命令的目标 id。 这个目标id
将被任何使用目标的后续命令使用(例如“输入”,
“消息”、“杀死”或“等待”)。
注意:此值会覆盖任何可能自动生成的目标 ID
由 TakTuk 分配。 因此,不建议明确混合使用
使用自动分配的目标 ID 分配目标 ID。
超时 折扣值
创建新的超时规范。 在给定的持续时间结束时
值,它将触发其附加的回调。 如果它没有附加回调,它将
向命令发送 TERM 信号。 如果命令执行在结束前终止
超时时间,超时被取消。
杀 折扣值
将回调附加到最后定义的超时。 这个回调发送一个信号,它
number 是给定值,用于超时命令。
行动 命令
将回调附加到最后定义的超时。 此回调执行给定的 打笃
命令。 如果它执行一些其他命令,它可以使用环境变量
“TAKTUK_PID”包含超时命令的pid。 给定的 打笃 命令
可以是任何有效的 打笃 命令(没有命令分隔符)。
请注意,每个超时可以有任意数量的附加回调。 他们将被处理
按照它们作为参数给出的顺序。
环境
变量 这 更改 打笃 默认 行为
一些 打笃 可以使用环境在某些主机上更改默认设置
变量。 这些设置与其他选项一样传播。 它们被覆盖
传播的设置和命令行选项。
要更改某些默认设置,请使用变量 TAKTUK_NAME 哪里 您的姓名 是的名字
大写的相应长选项并用下划线代替破折号。 为了
取复杂值的选项(例如“--debug”)只需添加一个下划线和字段
您想在名称末尾更改为大写。 使用 "taktuk
--print-defaults” 将为您提供用于更改默认设置的名称示例。
请注意,在环境中定义一个不使用的默认设置 打笃 没有
效果。
你也可以改变一些 打笃 本地默认设置而不传播
部署树中的更改。 为此,请使用变量 TAKTUK_MY_NAME 名字在哪里
定义如上。 和以前一样,这些本地设置被传播的
设置和命令行选项。
变量 集 by 打笃 in 远程 执行 命令
Taktuk 为其执行的所有命令设置以下环境变量:
TAKTUK_CONTROL_READ、TAKTUK_CONTROL_WRITE
文件描述符,由内部使用 打笃.
TAKTUK_COUNT个
成功部署的总数 打笃 实例
TAKTUK_HOSTNAME
给定的本地节点主机名 打笃 (在命令行上)
嘟嘟车_PIDS
本地执行的命令的pid列表(以空格分隔) 打笃
实例。
TAKTUK_TARGET
当前正在执行的进程的目标编号(参见“SET AND TARGETS
规格”了解更多详情)。
嘟嘟车_POSITION
命令行上的主机位置。
TAKTUK_RANK
本地实例的逻辑等级。
TAKTUK_父亲
生成此实例的 taktuk 实例的逻辑等级。
TAKTUK_CHILD_MIN
当前 taktuk 编号最低的后代的逻辑等级
实例(如果本地 TakTuk 实例没有子实例,则为 -1)。
TAKTUK_CHILD_MAX
当前 taktuk 编号最高的后代的逻辑等级
实例(如果本地 TakTuk 实例没有子实例,则为 -1)。
主机名 规格
提供给的主机名 打笃 可能是简单的机器名称或复杂的主机列表
规格。 在一般形式中,主机名由一个主机集和一个可选的
用斜线分隔的排除集。 这些集合中的每一个都是一个逗号分隔的主机列表
模板。 这些模板中的每一个都由常量部分(括号外的字符)组成
和可选的范围部分(括号内的字符)。 每个范围部分是一个逗号
间隔或单个值的分隔列表。 每个区间由两个单一值组成
用破折号隔开。 这适用于所有给定的主机名 打笃 (两者都与 -m or -f
选项)。
换句话说,以下表达式是有效的主机规范:
node1
节点[19]
节点[1-3]
节点[1-3],其他主机/节点2
node[1-3,5]part[a-b]/node[3-5]parta,node1partb
它们分别扩展为:
node1
node19
节点 1 节点 2 节点 3
node1 node3 其他主机
节点1部分 节点2部分a 节点2部分b 节点3部分b 节点5部分b
请注意,这些值列表不是正则表达式(“node[19]”是“node19”,
不是“节点 1、节点 2、......、节点 9”)。 间隔是使用 perl 神奇的 auto 实现的
增量功能,因此您可以使用字母数字值作为区间边界(请参阅 perl
文档,运算符 ++ 用于此自动增量的限制)。
设置 AND 目标 规格
这款 打笃 命令行和“TakTuk::send”例程接受一组规范为
目标主机。 集合规范由间隔规范组成,间隔规范由间隔规范组成
斜线。 区间规范要么由单个数字组成,要么由两个数字组成
由破折号或单个数字后跟一个加号分隔(最后一种情况与
从数字到最高编号的间隔 打笃 目的地)。 当然
指定间隔的两个数字必须按升序给出。
集合规范中包含的远程对等体都是逻辑编号的对等体
至少属于集合的一个区间。 以下是设定规格的一些示例:
1
对等体编号为 1
2-7
对等体编号为 2,3,4,5,6、7、XNUMX、XNUMX、XNUMX 和 XNUMX
2-4/1/10
对等体编号为 1,2,3,4、10、XNUMX、XNUMX 和 XNUMX
3+
从 3 到最高编号的对等点
5 + / 1
从 5 到编号最高的对等节点和对等节点 1
目标号码是由分配的号码 打笃 到它执行的所有进程
(成功启动或未使用“exec”或“taktuk_perl”命令)。 默认情况下,这
number 从 0 开始,一直到已执行的进程总数
自 TakTuk 推出以来减一。 “TakTuk::send”或“TakTuk::send”的目标进程 打笃 命令
可以用与集合相同的语法来表示。
此外, 打笃 了解几个特殊目标。 特殊目标“所有”目标
所有进程:这意味着该命令适用于所有正在执行的本地进程
(消息或输入数据被复制并发送给所有人),这是默认的
“输入”和“杀死”命令。 特殊目标“any”针对第一个符合条件的
过程。 在消息的情况下,这是发出“TakTuk::recv”的第一个进程
并且这还不是另一条消息的目标,这是
“消息”命令。 最后,特殊目标“输出”以输出流为目标
“消息”而不是过程。
示例
下面的例子说明了基本的使用 打笃 在几台机器上和使用
开发者选项。 请注意 打笃 旨在扩展到比
这些例子中涉及的数量。
基本版 用法
简单 部署
最简单的使用方法 打笃 是使用选项“-s”使其自我传播。 在这
情况下,在主机“toto.nowhere.com”上基本远程执行“hostname”即可
写:
taktuk -s -m toto.nowhere.com 广播 exec [主机名]
在这个例子中,“-s”询问 打笃 在远程主机上传播自己的代码。 有可能
通过在“toto.nowhere.com”上安装“taktuk”可执行文件来删除。 通过以下
我们将假设 打笃 安装在所有远程主机上。
“-m toto.nowhere.com”描述了要联系的远程主机集 打笃
并且“broadcast exec [主机名]”是一个将由 打笃
口译员。
这个例子可以用许多其他方式编写。 在交互模式下,同样
执行可能变成:
taktuk-m toto.nowhere.com
点击这里 打笃 被阻止等待来自标准输入的命令。 因此,我们只需要输入:
广播执行{主机名}
Ctrl-D
在这里你可以注意到“exec”的参数 打笃 命令(作为所有命令
参数)可以包含在任何合理的分隔符对中。 我们也可以写
包含在文件“machine”中的命令所涉及的主机列表:
toto.nowhere.com
和 打笃 命令变为:
taktuk -f 机器广播 exec - 主机名 -
我们还可以使用另一个文件“选项”,其中包含:
-f 机器
并将其用作给予的选项行 打笃:
taktuk -F 选项广播 exec \( 主机名 \)
最后,所有内容都可以存储在最后一个文件“command_line”中,其中包含:
-f 机器广播 exec = 主机名 =
并且以下命令达到相同的结果:
taktuk -F 命令行
所有这些变体都具有相同的效果:它们在
“toto.nowhere.com”并且程序的输出被转发到本地主机。 在
这个案例:
toto.nowhere.com:主机名:somepid:输出> toto.nowhere.com
参数 背带
请注意,命令参数的大括号必须与其内容分开。 因此,
它们可以包含其他大括号,只要没有单个右大括号是
内容:
taktuk -m localhost broadcast exec [ 'if [ $RANDOM -gt 10000 ]; then echo Greater;else echo lower;fi' ]
在这个例子中,引号是必要的,以防止 shell 解释“$”
和 ”;” 字符并防止“if”脚趾的右大括号被视为
关闭“exec”命令。 在这种情况下,变量将仅在
远程主机。 同样的例子也可以使用快捷方式和交互方式来表达
模式:
taktuk -m 本地主机 -E%
然后输入:
是 [ if [ $RANDOM -gt 10000 %];然后回声更大;否则回声更低;fi ]
Ctrl-D
注意测试中使用的结束括号不应被解释为
“exec”参数的右括号。 在这种情况下,一个更简单的解决方案可能是
使用另一种大括号
taktuk -m 本地主机
然后:
是 { if [ $RANDOM -gt 10000 ];然后回声更大;否则回声更低;fi }
Ctrl-D
通常,如果你想安全,你可以引用所有命令参数。 尽管如此,
请注意,不应在交互模式下引用参数,因为输入行不是
由外壳解释。
EXEC 参数
执行的命令 打笃 可以使用“exec”参数超时。 例如如果
你想执行一些命令并在两秒后向它发送一个 TERM 信号,只需
类型:
taktuk -m localhost 广播执行超时 2 [睡眠 10]
发生超时时执行的回调也可以不是 TERM
信号。 这可以是另一个信号(例如 KILL):
taktuk -m localhost 广播执行超时 2 kill 9 [ sleep 10 ]
或任何有效 打笃 命令:
taktuk -m localhost 广播执行超时 2 动作广播执行 [回声你好] [睡眠 10]
甚至几个超时和几个回调:
taktuk -m localhost bet 2 ae [echo hello] k 30 t 10 k 9 [ sleep 5 ]
在最后一个示例中,命令“sleep 5”由 打笃. 2 秒后,
第一次超时将被触发,它将执行命令“echo hello”并发送
USR1 信号给第一个命令(“sleep 5”)。 第二次超时设置为10
秒。 因此,它永远不会发生,因为“sleep 5”命令将在之前终止
它的到期。
拓扑
通常情况下, 打笃 使用相对扁平的树部署自身,因为它的默认窗口
大小非常大(10 个同时进行的连接)。 使用较小的窗口
size 将导致更深的树,尽管它也取决于本地的负载
部署节点。 您可以使用 打笃 “网络状态”命令打印树
由...构建 打笃.
请注意,使用太大的窗口通常是一个坏主意,因为它会导致太大
大量的本地负载和糟糕的工作分配(大约 10 个通常就足够了)。
你也可以强行 打笃 使用更具体的拓扑。 例如,要执行
"echo $$" 使用扁平树作为部署拓扑,只需禁用工作窃取
打笃:
taktuk -d -1 -m host1 -m host2 -m host3 广播执行 ['echo $$']
并使用链状拓扑,或者在参数结构中编码拓扑:
taktuk -m host1 -[ -m host2 -[ -m host3 -] -] 广播执行 [ 'echo $$' ]
或将动态树的数量限制为 1:
taktuk -d 1 -m host1 -m host2 -m host3 广播执行 ['echo $$']
最后,默认将使用动态构造的拓扑:
taktuk -d 0 -m host1 -m host2 -m host3 广播执行 ['echo $$']
轻巧 格 部署
在轻量级网格上,由于局部性问题(ldap 缓存、网络拓扑等)
将每个子集群的部署分开似乎很有趣。 要做到这一点,它是
可以将每个集群的节点封装到一个单独的部署组中:
taktuk -b -m node1.cluster1 -m node2.cluster1 -m node3.cluster1 -m node4.cluster1 -e -b -m node1.cluster2 -m node2.cluster2 -m node3.cluster2 -m node4.cluster2 -e 广播exec [主机名]
这个命令有部署的作用 打笃 在两个集群(集群 1 和 2)上制作
四个节点(节点 1 到 4),防止从一个集群部署的节点被用于
从其他集群部署节点。 最后,一旦部署完成,它
在所有这些节点上执行命令“hostname”。
执行 a 不同 命令 on 每 主持人
可以使用参数为每个不同的主机提供自己的命令:
./taktuk -m host1 -[ exec [ hostname ] -] -m host2 -[ exec [ id ] -] -m host3 -[ exec [ 'echo $TAKTUK_RANK; ls' ] -] 退出
但这也可以使用设置规范给出(在这种情况下,逻辑数是
用于主机):
./taktuk -m host1 -m host3 -m host8 1 exec [主机名], 2 exec [ id ], 3 exec [ 'echo $TAKTUK_RANK; ls']
或在交互模式下:
./taktuk -m 主机1 -m 主机3 -m 主机8
1 exec [主机名]
2 执行 [ id ]
3 exec [ echo $TAKTUK_RANK; ]
Ctrl-D
不过请记住,通常这些逻辑数字与
主机在命令行上的位置。
脚本 扩散
在三台主机上传播和执行名为“essai.pl”的 perl 脚本,知道
“taktuk”和“essai.pl”只存在于根节点上
打笃:
taktuk -s -m 主机1 -m 主机2 -m 主机3
广播执行 [ perl -- - ]
广播输入文件 [essai.pl]
广播输入关闭
Ctrl-D
档 扩散 和 采集
从 3.4 版本开始,TakTuk 直接支持文件传输。 请注意,这
传输使用 打笃 网络(通常是由 ssh 连接组成的树
默认)。 这个网络对于大文件的传输效率不高(无论是
从拓扑和协议的角度来看),因此在使用它时请记住这一点
功能。
将名为“message.txt”的文件复制到“/ tmp目录" 每个远程主机的目录因此
一样容易:
taktuk -s -m 主机1 -m 主机2 -m 主机3
广播放置 [ message.txt ] [ / tmp目录 ]
Ctrl-D
但是旧的方法仍然有效(并且与之前的命令几乎相同):
taktuk -s -m 主机1 -m 主机2 -m 主机3
广播 exec [ cat - >/tmp/message.txt ]
广播输入文件 [message.txt]
广播输入关闭
Ctrl-D
尽管在键入时需要更加小心 shell 解释
一切都直接在命令行上:
taktuk -s -m host1 -m host2 -m host3 broadcast exec ['cat ->/tmp/message.txt']\;广播输入文件[message.txt]
请注意,在后一个命令中,“输入关闭”不是必需的,因为 打笃 关闭
退出时所有生成的命令的输入。
“get”命令也使以前非常困难的事情成为可能
打笃, 档案收集。 以下命令从中获取文件“/tmp/message.txt”
每个远程主机并将其本地复制到“message-number.txt”,其中“number”是
源节点的逻辑等级:
taktuk -s -m 主机1 -m 主机2 -m 主机3
广播获取 [ /tmp/message.txt ] [ message-$rank.txt ]
Ctrl-D
最后,值得一提的是“put/get”命令可以复制目录
并保持文件权限不变。
通讯
打笃 也可用于建立点对点通信。 假设文件
“communication.pl”包含以下 Perl 脚本:
我的 $rank = TakTuk::get('rank');
我的 $count = TakTuk::get('count');
如果 ($rank == 1)
{
打印“我正在处理 1\n”;
如果($count > 1)
{
TakTuk::send(to=>2, body=>"Hello world");
}
}
elsif ($rank == 2)
{
打印“我正在处理 2\n”;
我的 ($from, $message) = TakTuk::recv();
print "Process $to 从 $from 接收 $message\n";
}
然后执行以下命令:
taktuk -m localhost -m localhost 广播 taktuk_perl [ - ]\;广播输入文件 [communication.pl]
将产生类似于以下内容的输出:
Astaroth.local: taktuk_perl: 3523: 输出 > 我正在处理 2
Astaroth.local: taktuk_perl: 3523: output > Process 2 从 1 接收到 Hello world
Astaroth.local:taktuk_perl:3523:状态 > 0
Astaroth.local: taktuk_perl: 3524: 输出 > 我正在处理 1
Astaroth.local:taktuk_perl:3524:状态 > 0
如果文件“communication.pl”被放置在用户的登录目录中,这个
也可以通过更简单的方式执行:
taktuk -m localhost -m localhost 广播 taktuk_perl [communication.pl]
产量 模板 和 重定向
打笃 还能够使每个站点在没有命令状态的情况下响应其等级
信息:
taktuk -o status -m host1 -m host2 broadcast exec ['echo $TAKTUK_RANK']
或者在命令的每一行输出之前删除提示:
taktuk -o output='"$line\n"' -m host1 -m host2 broadcast exec ['echo $TAKTUK_RANK']
甚至更改提示以使其仅显示流类型:
taktuk -o default='"$type > $line\n"' -m host1 -m host2 broadcast exec ['echo $TAKTUK_RANK']
并且还可以将状态重定向到文件描述符 2 仅用于第二个
主机:
taktuk -m host1 -R status=2 -m host2 broadcast exec ['echo $TAKTUK_RANK']
等等...
开发商 用法
调试 打笃
调试 打笃 使用“调试”、“警告”和“错误”功能
包“诊断”。 这些例程,取决于包的调试级别
在其中调用它们,产生传播到根节点的输出和
印在屏幕上。
默认情况下,包的调试级别设置为 2(所有内容都打印出来
除了“调试”消息)。 它可能会使用每个包进行更改 -D 选项。
例如下面的代码在“toto.nowhere.com”上执行“true”并打印出来
内部消息的每一点:
taktuk -D default=1 -m toto.nowhere.com 广播 exec [ true ]
但是可以执行相同的命令,只保留来自
“调度程序”包:
taktuk -D scheduler=1 -m toto.nowhere.com 广播 exec [ true ]
或确保执行免除任何警告或错误消息:
taktuk -D default=4 -m toto.nowhere.com 广播 exec [ true ]
内部 条未读消息 服务器
使用的内部消息服务器 打笃 用于逻辑网络的管理
构造、命令执行和 I/O 转发可以使用 -r
选项:
塔克图克-r
请注意,在这种模式下的行为 打笃 看起来很神秘。 这不是
面向普通用户。
使用 onworks.net 服务在线使用 taktuk