使用命令自动加载多个Unix屏幕

时间:2018-08-30 20:50:45

标签: python unix gnu-screen

我需要并行运行20个实验。对于每一个,我正在加载一个新的unix screen,然后在其中加载anaconda环境,然后运行带有该实验参数的python脚本。

工作流程如下:

> screen -S exp01
> source activate myenv
(myenv) > python process_experiment 01
> screen -S exp02
> source activate myenv
(myenv) > python process_experiment 02

有没有一种方法可以自动编写脚本?

1 个答案:

答案 0 :(得分:1)

根据this question,您可以像这样向screen会话发送击键:

screen -dmS new_screen sh
screen -S new_screen -X stuff "cd /dir
"
screen -S new_screen -X stuff "java -version
"

您可以编写一个小的Shell脚本(将其称为run-exp.sh)来设置实验的运行状态:

#!/bin/sh
source activate myenv
python process_experiment $1

然后使用循环来启动运行该脚本的屏幕会话:

#!/bin/sh
for i in $(seq -w 1 20); do
    screen -dmS exp$i
    screen -S exp$i -X stuff "./run-exp.sh $i
"
    # (The new line is necessary, not a mistake.)
done