Автоматизируйте загрузку нескольких экранов Unix с помощью команд

1

Мне нужно провести 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

Есть ли способ написать сценарий для его автоматизации?

Теги:
gnu-screen

1 ответ

1

В соответствии с этим вопросом вы можете отправить нажатия клавиш на сеанс 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
  • 0
    Я только что понял ошибку в моем описании: номер эксперимента должен быть 2 цифры, поэтому 1 должен быть 01
  • 0
    К сожалению, это делает «01» вместо 1, верно? В любом случае, я не вижу ничего на любом экране
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню