在已运行的 shell 脚本中运行 shell 脚本

在已运行的 shell 脚本中运行 shell 脚本

我有一个小型 SLURM 集群,我用它来运行作业。我运行一个脚本,当该脚本运行时,我想输入特定的键盘命令“t + Enter”。我相信我应该通过提交另一个作业来做到这一点,但我需要它在第一个运行脚本中运行。

关于如何实现这一目标有什么想法吗?

答案1

乔治,

您不希望将单独的 sbatch 命令排队来执行此操作。如果您使用 OpenHPC 堆栈,则可以使用wwsh ssh -a <command>where 来-a表示所有节点,或者将其替换为要在其上运行命令的节点。

至于从现有的批处理脚本中执行此操作,您是否考虑过使用expect?如果您需要运行输入的时间是确定性的,则该expect程序将允许您键入类似的内容(t 字符后跟返回键)。send -- "t\r"如果您想了解更多信息expect,请查看类似https://likegeeks.com/expect-command/

根据我的经验,如果您的集群没有太多空间,或者您希望获得最大性能,使用仅命令行方法而不是在系统上安装 x11(或至少是运行所需的部分xdotool),这会很有帮助。个人舒适度将决定这一点。

相关内容