ecFlow学习笔记02.4.4 —— 运行远程作业
目录
该教程的最新版已发布在GitHub上,请访问ecflow-tutorial-cn
这是 ecFlow 教程的一部分,完整教程请参看《ecFlow学习笔记02 —— 教程》
- *ecFlow 使用 ECF_JOB_CMD 变量值提交作业。修改该变量可以控制在哪里如何运行作业。该变量应该与 ECF_JOB 和 ECF_JOBOUT变量同时使用。
ECF_JOB 是作业文件的路径
ECF_JOBOUT 是标准输出流的文件位置
默认的命令
接下来,我们将在远程主机上运行程序。需要使用 UNIX 命令 ssh。
我们喜欢使用 HOST 变量定义远程主机的名字,我们假设所有远程主机上的文件都可见(例如使用 NFS)。
下面的例子中将字符串 {shell}??????{/shell} 替换为你的实际的主机名。
注意:远程运行任务的主机环境可能与本地运行的环境不同。这取决于你的系统如何设置。
head.h 中已经设置正确的 PATH,可以使用 child command。
如果没有这事,在 head.h 中调用 {shell}ecflow_client –init{/shell} 前添加下面的行:
使用 ssh 需要远程主机上配置好 public key。检查不用密码是否能登陆到远程主机。如果需要输入密码,则需要将你的 pulic key 添加到远程机器上。执行下面的命令:
修改 family f5,是所有任务都在远程服务器上运行
Suite Definition
Text
如果 login shell 是 csh,应该这样定义 ECF_JOB_CMD:
Python
修改前面创建的 {shell}create_family_f5(){/shell} 函数。
任务
- 修改 {shell}head.h{/shell} 中的环境变量
- 修改 suite definitino
- 替换 suite definition
- 可能不会立即生效,查看日志文件 {shell}$HOME/course/host.port.ecf.log{/shell} 寻找原因。
- 在 ecf script 脚本中添加 {shell}uname -n{/shell} 检查任务运行在哪台主机
- 如何才能让 {shell}/test/f5/t9{/shell} 运行在另外一台主机上?实验你的方法。
词汇表
ecflow_server
variable
job file
head.h
child command
ecflow_client
family
suite definition