Мне нужно провести 20 экспериментов параллельно. Для каждого я загружаю новый screen
unix, затем в рамках загрузки среды anaconda, а затем запускаю скрипт python с аргументом для этого эксперимента.
Рабочий процесс выглядит так:
> screen -S exp01
> source activate myenv
(myenv) > python process_experiment 01
> screen -S exp02
> source activate myenv
(myenv) > python process_experiment 02
Есть ли способ написать сценарий для его автоматизации?
В соответствии с этим вопросом вы можете отправить нажатия клавиш на сеанс screen
следующим образом:
screen -dmS new_screen sh screen -S new_screen -X stuff "cd /dir " screen -S new_screen -X stuff "java -version "
Вы можете написать небольшой сценарий оболочки (позвоните ему 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