cattach - 附加到作业步¶
cattach 用于将当前终端附加到一个正在运行的交互式作业步,实现对作业步标准输入/输出的实时转发。用户的输入将被转发到作业步的任务,任务的输出将被转发回用户终端。cattach 需要在有 cfored 运行的节点上使用。
用法¶
其中 <jobid>.<stepid> 为目标作业步的标识符,可通过 cqueue --step 查询正在运行的作业步。
选项¶
- -h, --help
-
显示 cattach 命令的帮助信息。
- -v, --version
-
显示 cattach 版本信息。
- -C, --config=<path>
-
配置文件路径。默认值:
/etc/crane/config.yaml。 - --output-filter=<task_id>
-
仅显示指定任务的标准输出(task_id 从 0 开始计数)。默认值:
-1(显示所有任务的标准输出)。 - --error-filter=<task_id>
-
仅显示指定任务的标准错误输出(task_id 从 0 开始计数)。默认值:
-1(显示所有任务的标准错误)。 - --input-filter=<task_id>
-
仅将标准输入发送到指定任务(task_id 从 0 开始计数)。默认值:
-1(广播到所有任务)。 - --label
-
在标准输出和标准错误的每行前添加任务编号前缀,格式为
<task_id>: <line>。 - --layout
-
打印作业步的任务布局信息后退出,不附加到任务。
- --quiet
-
静默模式,抑制提示性信息输出。
使用示例¶
基本用法¶
查询正在运行的作业步:
附加到作业 42 的步 0:
按 Ctrl+C 可断开 cattach 连接,作业步本身不受影响,仍继续运行。
查看任务布局¶
打印作业步的节点和任务分布后退出,不附加到任务:
多任务步 I/O 过滤¶
对于包含多个任务的作业步,可以过滤特定任务的输出或将输入定向到指定任务:
# 仅显示任务 0 的标准输出
$ cattach --output-filter 0 42.0
# 仅显示任务 1 的标准输出
$ cattach --output-filter 1 42.0
# 仅将标准输入发送到任务 0
$ cattach --input-filter 0 42.0
# 同时过滤输出并定向输入
$ cattach --output-filter 0 --input-filter 0 42.0
带标签的输出¶
为每行输出添加任务编号前缀,适合多任务步的调试与观察:
静默模式¶
附加时不打印提示信息(如 "Task io forward ready, waiting input."):
注意事项¶
- cattach 必须在运行有 cfored 的节点上执行。
- PTY 模式由作业步的配置自动决定,无需手动指定。若目标作业步通过
crun --pty启动,cattach 将自动以 PTY 模式运行。 - 只读模式:当目标作业步通过
crun --input=<task_id>启动时(即标准输入已独占路由到特定任务),cattach 将自动进入只读模式,仅显示任务输出,不转发终端输入。 - 在非 PTY 模式下,按
Ctrl+C将断开 cattach 连接,不会终止作业步本身。 --error-filter选项当前暂不生效,原因是标准错误消息在协议层面暂未携带任务 ID,将在后续版本中支持。