Есть ли какой-нибудь инструмент / команда в Linux, которую я могу использовать для одновременного запуска команды на нескольких вкладках? Я хочу выполнить одну и ту же команду: ./myprog argument1 argument2
одновременно в нескольких оболочках, чтобы проверить, нормально ли работают мьютексы в многопоточной программе. Я хочу иметь возможность увеличить количество экземпляров этой программы, чтобы потом подвергать свой код стрессу.
Я как бы ищу что-то вроде того, что делает стена. Я могу подумать об использовании tty, но это просто кажется большой болью, если мне нужно масштабировать это до большего количества оболочек.
shell
terminal
parallelism
Arpith
источник
источник
myprog
экземпляры и агрегирует их результаты для вас.Ответы:
Как уже предлагал mavillan, просто используйте терминатор . Это позволяет отображать много терминалов мозаичным способом. При включении функции вещания вы можете вводить одну и ту же команду одновременно на каждом терминале.
Вот пример с командой date, транслируемой в сетку из 32 терминалов.
источник
У tmux есть такая возможность. (наряду со многими другими полезными возможностями в том же духе)
Может быть сделано через:
источник
Multixterm
Еще один инструмент для добавления в список называется
multixterm
. Он используетxterm
терминалы. Вы можете вызвать это так:И как только вы будете представлены GUI.
Затем вы можете начать вращать
xterm
окна, нажавnew xterm
кнопку. Вот, например, я вызвал 2. Если вы затем щелкните по главному окну, вы можете начать вводить команды в обоих окнах одновременно:keyboardcast
По-видимому, доступно только в Ubuntu, похоже на multixterm.
выдержка
источник
Это может быть достигнуто с помощью iTerm2
Ссылка: http://korishev.com/blog/2014/02/28/iterm2-broadcast-input/
источник
Вы можете сделать что-то вроде:
Или, если вывод каждой команды актуален во время выполнения, вы можете настроить экран.
Экран требует больше ручной работы.
источник
tail -f
файл журнала вместо настройки сотен экранов.tail -f *.log
Я пользователь KDE, с konsole 2.13.2 на KDE 4.13.3 вы можете сделать это:
открытая консоль
разделить вид по вертикали
писать одновременно на каждом терминале внутри окна
источник
Попробуйте Терминатор (эмулятор терминала). Он может иметь несколько сеансов оболочки в одном окне, и вы можете передать команду всем им.
терминатор
источник
Вы можете использовать такой инструмент, как MobaXterm, и он позволит вам одновременно подключаться, а затем вставлять ваши команды во все ваши окна.
источник
Если вы хотите видеть только вывод из сотого выполнения программы:
источник
Вы можете контролировать
konsole
черезDCOP
. Пример отсюда :источник
Я согласен с комментарием, сделанным @msw выше. Это напишет вам скрипт для запуска фоновым
sh
процессом и распечатаетsh
pid дочернего процесса, чтобы вы могли следить за ним и его дочерними процессами во время его работы.источник
@Jinpeng был на правильном пути с GNU Parallel , но не с реализацией.
Пример: запустите 10 параллельных экземпляров вашей программы, причем каждый поток запускает вашу программу только один раз:
Пример: запустите 10 параллельных потоков, каждый из которых будет выполнять вашу программу бесконечно:
Вы можете легко масштабировать это до сотен потоков, заменив
10
в моих примерах.Если ваша программа генерирует какие-либо сообщения стандартного вывода и вы хотите видеть их в том виде, в котором они были созданы (а не по умолчанию, который их сопоставляет),
--ungroup
может быть полезна опция параллельного подключения.Если вы выполняете много потоков с вашей рабочей станции и не хотите, чтобы что-то перестало отвечать, рассмотрите
nice
все поддерево процесса во время запуска.Примечание стороны, GNU Parallel обычно не устанавливается по умолчанию , но, как правило , в своей обычной операции РЕПО пакета, так что просто установить его , как и любой другой пакет:
dnf install parallel
,apt-get install parallel
,brew install parallel
и т.д.источник
Вы можете запустить процессы в фоновом режиме с
nohup
.Пример:
Выход:
Не забудьте убить задачу позже с учетом
PID
:Чтобы вывести процесс на передний план, необходимо ввести номер задания, в этом случае
[1]
:источник
Параллельное GNU - это именно тот инструмент, который вы ищете.
parallel -j 9 yourcommand
источник
Моя маленькая мельница
Произведет настройку терминатора (условия размещения) для многих окон в одной группе.
РЕДАКТИРОВАТЬ: по крайней мере, терминатор может отправлять трансляции в каждый терминал в той же группе. Эта функция является переключаемой, поэтому вы можете включить ее, написать «su -», затем отключить и записать пароль пользователя на терминалы onces и снова включить его.
источник