Наконец-то я нашел ответ благодаря этому сообщению на StackExchange! Иногда для поиска решения требуются другие ключевые слова, поэтому я отвечу на этот вопрос на случай, если сюда попадут другие ребята.
Автоматически вставлять команды на экран с помощью команды bash
:
screen -x screen_name -p 1 -S stuff 'executable_script1.sh\n'
, где -p 1
относится к экранному процессу 1$
. Обратите внимание, что \n
в конце команды обязателен, как и при нажатии клавиши ввода после вставки командной строки.
1 )Создайте сеанс screen
, в котором вы хотите работать, (с именем «экран _имя»):
screen -S screen_name
с достаточным количеством процессов для всех команд (в моем примере, 0$ htop
плюс 2 процесса:1$
и 2$
). Обратите внимание, что вы можете отредактировать .screenrc
в своем домашнем каталоге, чтобы сеансы экрана начинались с заданным количеством процессов по умолчанию. Для этого примера мой .screenrc
содержит:
screen -t htop
screen -t
screen -t
2 )Создать файлы bash для каждой группы команд,для выполнения различными экранными процессами.
Здесь у меня есть 2 файла, screen1
содержащие:
#!/bin/bash
screen -x screen_name -p 1 -X stuff 'executable_script1.sh\n'
screen -x screen_name -p 1 -X stuff 'mv executable_script1 directory1\n'
и screen2
, содержащие:
#!/bin/bash
screen -x screen_name -p 2 -X stuff 'executable_script2.sh\n'
screen -x screen_name -p 2 -X stuff 'mv executable_script2 directory1\n'
3 )Вставьте сразу все свои команды в терминал с помощью:
bash /path_to_screen1/screen1 & /path_to_screen1/screen2 &
Вы можете немедленно закрыть этот терминал, даже если у вас есть длительные вычисления, так как все, что он делает, это вставляет команду в screen
. Вручную откройте сеанс screen
, чтобы убедиться, что эти строки выполняются.
Излишне говорить, что если у вас есть большое количество команд для передачи во многие экранные процессы, вы можете создать файлы bash и вставить команды (шаги 2 и 3 )с помощью скрипта (с помощью python
, например ). Также executable_script1.sh
может содержать вызовы python
, если необходимо, с python python_script.py
, как в обычном терминале.
Надеюсь, это поможет другим!