Есть ли способ запустить несколько сценариев bash с одним сценарием одновременно? - PullRequest
0 голосов
/ 02 июня 2019

Я управляю ботом Instagram, использующим питон и селен. Я использую скрипт bash для запуска скрипта python с учетными данными (имя пользователя, пароль, хэштеги и т. Д.). Я запускаю несколько Instagram, поэтому я сделал несколько копий этого файла. Есть ли способ поместить это в один файл, который я могу нажать и запустить? Чтобы открыть несколько терминалов, использующих назначенный им аккаунт?

Я уже пытался просто добавить их в один большой файл, но сценарии не будут работать, пока не закончится предыдущий.

Кроме того, поскольку я использую селен, пробовать многопоточность в python довольно сложно, но я не возражаю против того, чтобы идти по этому пути, если бы кто-то мог указать мне, где я мог бы начать с этого.

#!/bin/sh
cd PycharmProjects/InstaBot
python3 W.py

Ответы [ 2 ]

0 голосов
/ 02 июня 2019

Только один процесс в оболочке может выполняться в режиме переднего плана.Таким образом, команда выполняется только после завершения предыдущего.Добавление символа «&» в конце командной строки говорит оболочке, что команда должна выполняться в фоновом режиме.Таким образом, оболочка запустит python и продолжит работу без ожидания.

Это выполнит два экземпляра одновременно, но все они выведут на один и тот же терминал:

    #!/bin/sh
    cd PycharmProjects/InstaBot
    python3 W.py first_credentials &
    python3 W.py second_credentials &

Вы можете использовать ту же техникучтобы запустить новый процесс терминала для каждого скрипта Python:

    #!/bin/sh
    cd PycharmProjects/InstaBot
    gnome-terminal   -e "python3 W.py first_credentials"  &
    gnome-terminal   -e "python3 W.py second_credentials" &
0 голосов
/ 02 июня 2019

Я настоятельно рекомендую всем прочитать о Bash Job Control .

Заниматься многопоточностью - нелепо, если ваше узкое место не имеет ничего общего с процессором.

for script in PycharmProjects/InstaBot/*.py; do
  python3 "$script" &
done
jobs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...