Entry tags:
tmux
Инвестирую кусок времени в tmux, а именно, в его детачед режим. Фактически, это такой извращённый (или нет?) метод запускать программы в параллель, так, чтобы их выводы не перемешивались.
Я очень, очень, очень устал бороться с всеми CI мира за matrix'ы и вытекающее из них. У меня сейчас есть гипотеза, что отказ от matrix в пользу банального tmux'а, который запускает N сессий в параллель, сохраняет их вывод в файл, а потом дампает их на экран в разумном порядке, возможно, удобнее, чем борьба с птичьим языком CI.
Потенциально, управление tmux'ом может быть даже не на баше, а на чём-то более дружественном к программисту. В этой ситуации можно написа... wait
https://github.com/tmux-python/libtmux
Ну вот, уже всё написано.
Пожалуй, одно сложное место, о котором я думаю, это "как мне узнать, что все программы во всех сессиях закончились". ...
Возможно, я могу просто послать C-d после capture. Если оно правильно отрабатывает порядок выполнения, то Ctrl-D будет отрабатывать сразу же после завершения программы (как Ctrl-D в терминале).
Почему tmux, а не просто subprocess.run? Возможность отлаживать это локально, включая возможность переключаться между сессиями.
... О, я осознал проблему, которой надо заняться. А как быть с кодом возврата? Я хочу знать кто из них упал, а кто нет.
Я очень, очень, очень устал бороться с всеми CI мира за matrix'ы и вытекающее из них. У меня сейчас есть гипотеза, что отказ от matrix в пользу банального tmux'а, который запускает N сессий в параллель, сохраняет их вывод в файл, а потом дампает их на экран в разумном порядке, возможно, удобнее, чем борьба с птичьим языком CI.
Потенциально, управление tmux'ом может быть даже не на баше, а на чём-то более дружественном к программисту. В этой ситуации можно написа... wait
https://github.com/tmux-python/libtmux
Ну вот, уже всё написано.
Пожалуй, одно сложное место, о котором я думаю, это "как мне узнать, что все программы во всех сессиях закончились". ...
Возможно, я могу просто послать C-d после capture. Если оно правильно отрабатывает порядок выполнения, то Ctrl-D будет отрабатывать сразу же после завершения программы (как Ctrl-D в терминале).
Почему tmux, а не просто subprocess.run? Возможность отлаживать это локально, включая возможность переключаться между сессиями.
... О, я осознал проблему, которой надо заняться. А как быть с кодом возврата? Я хочу знать кто из них упал, а кто нет.
no subject
Как интересно! Этому tmux-у сто лет в обед, я уже забыл, что им пользовался когда-то.
no subject
А я вот посмотрел, что благородные доны пользуются, и подумал, why not? В целом, он круче, чем screen.
А вот мою задачу он не решает - получить коды возврата в человеческом режиме нельзя. И даже вариант с xargs не работает, потому что чёрти-что в ансибле творится. Почему 40 процессов на 80 ядрах работают медленее, чем 40 виртуалок по 2 ядра и по одному процессу в каждом. Причём медленее в разы.