1

Тема: tmux: як відкрити 3 панелі та виконати shell команду на кожній

Вітаю.
Я хочу запустити tmux і щоб в ньому відразу було 3 панелі горизонтально розміщені, котрі мають однакову ширину, і щоб в цих панелях була виконана команда.

Задумка така - в i3wm я створюю вікно терміналу і запускаю в ньому tmux з трьома панелі і в кожні з них викликаю node, потім я рухаю це вікно в scratchpad, і тепер я можу приховувати і показувати це вікно тоді, коли мені потрібно, і в цьому вікні в мене буде три панелі, в котрих, використовуючи командний рядок node, я зможу виконувати математичні операції.

Мені це треба для швидких обрахунків, тому що зараз я то роблю в адресному рядку браузера.

Я б хотів це все зробити у вигляді однієї команди

tmux ....

Наразі я знаю, як зробити 3 панелі однакової висоти, я записав такий код в .tmux.conf

splitw -h
splitw -h
select-layout even-horizontal

і коли я запускаю tmux ось так

tmux source ~/.tmux.conf

то воно запускає tmux з трьома рівними за розміром панелями, але це відбувається не завжди, в мене лише 1 раз вийшло так запустити його, а решту випадків воно пише - no server running /tmp/...

1. Як мені виконати в кожній з трьох панелей команду node ?
2. Як мені позбутися помилки - no server running /tmp/... ?

2

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

кулупався з тим лайном собачим, а воно не може й нормально запуститися.

Якщо запустити спочатку tmux, вручну, в консолі, а потім так само вручну запустити команди, одну за одною, руцями, то виходить те, що мені треба, а от коли записую ці самі команди в файлик з розширенням sh і запускаю - то воно й наче робить те, що треба, але через сраку, проявляється це в зайвих символах, котрі показуються в двох створених панелях.

При цьому код, котрий запускає tmux, а потім виконує команди - не працює, тому що цьому лайну спочатку потрібно роздуплитись після запуска tmux'а, аби воно розчехлилось "о! так тут же tmux запущений, йоклмн!" і після цього воно може виконати tmux команди, а якщо все відразу робити, команда за командою, то воно тупить "еее... куди тут ці команди собі встромити, не бачу де той tmux є запущений, еееееееееее........"

Коротше, лайно ваш tmux собаче.

3 Востаннє редагувалося HetmanNet (05.03.2019 15:24:06)

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

FakiNyan написав:

кулупався з тим лайном собачим, а воно не може й нормально запуститися.

Якщо запустити спочатку tmux, вручну, в консолі, а потім так само вручну запустити команди, одну за одною, руцями, то виходить те, що мені треба, а от коли записую ці самі команди в файлик з розширенням sh і запускаю - то воно й наче робить те, що треба, але через сраку, проявляється це в зайвих символах, котрі показуються в двох створених панелях.

При цьому код, котрий запускає tmux, а потім виконує команди - не працює, тому що цьому лайну спочатку потрібно роздуплитись після запуска tmux'а, аби воно розчехлилось "о! так тут же tmux запущений, йоклмн!" і після цього воно може виконати tmux команди, а якщо все відразу робити, команда за командою, то воно тупить "еее... куди тут ці команди собі встромити, не бачу де той tmux є запущений, еееееееееее........"

Коротше, лайно ваш tmux собаче.

А зробити затримку перед відправкою команд в tmux?
Чи ставити в автозапуск в systemd демон tmux?
Може проблема не в tmux?

Подякували: FakiNyan1

4

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

HetmanNet написав:
FakiNyan написав:

кулупався з тим лайном собачим, а воно не може й нормально запуститися.

Якщо запустити спочатку tmux, вручну, в консолі, а потім так само вручну запустити команди, одну за одною, руцями, то виходить те, що мені треба, а от коли записую ці самі команди в файлик з розширенням sh і запускаю - то воно й наче робить те, що треба, але через сраку, проявляється це в зайвих символах, котрі показуються в двох створених панелях.

При цьому код, котрий запускає tmux, а потім виконує команди - не працює, тому що цьому лайну спочатку потрібно роздуплитись після запуска tmux'а, аби воно розчехлилось "о! так тут же tmux запущений, йоклмн!" і після цього воно може виконати tmux команди, а якщо все відразу робити, команда за командою, то воно тупить "еее... куди тут ці команди собі встромити, не бачу де той tmux є запущений, еееееееееее........"

Коротше, лайно ваш tmux собаче.

А зробити затримку перед відправкою команд в tmux?
Чи ставити в автозапуск в systemd демон tmux?
Може проблема не в tmux?

затримку ставив, але воно не допомогло

а по другому варіянту - я як раз це побачив в arch wiki і от як раз прийшов сюди, аби написати, що тепер все працює на 99% як треба, і ваше повідомлення побачив

systemd запускає tmux в від'єднаному режимі, а в конфігі i3wm я роблю так

exec --no-startup-id st -e tmux attach
exec --no-startup-id ~/tmux_bootstrap.sh

тобто, воно приєднується до тієї сесії, котра була запущена systemd, а потім запускається скрипт, котрий створює потрібний лейаут.

Виглядає отако
https://cdn.discordapp.com/attachments/305408547913465856/552493087159615498/unknown.png


червоним обведені якісь незрозумілі артефакти, коли я вручну команди вводив, то все виглядало красиво, як в першій панельці, а через скрипт виглядає отако, чомусь

5

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

Мабуть підійде ця стара тема для мого питання.

Проблема наступна: є файл-менеджер mc, де ліворуч відкрита папка на локальному ноуті, а праворуч - папка на віддаленому інстансі, до якого конекчусь через ssh. Коли присипляю ноут і вмикаю знову, конекшн ssh відповідно рветься. Доводиться mc закривати і відкривати знову, заходити в потрібні папки ліворуч і праворуч.

Чи допоможе чимось тут tmux і як налаштувати?

6

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

frz написав:

Мабуть підійде ця стара тема для мого питання.

Проблема наступна: є файл-менеджер mc, де ліворуч відкрита папка на локальному ноуті, а праворуч - папка на віддаленому інстансі, до якого конекчусь через ssh. Коли присипляю ноут і вмикаю знову, конекшн ssh відповідно рветься. Доводиться mc закривати і відкривати знову, заходити в потрібні папки ліворуч і праворуч.

Чи допоможе чимось тут tmux і як налаштувати?

Tmux допоможе утримувати сесію активною на сервері, навіть якщо з'єднання з клієнтом було перервано. Ось базові кроки, щоб використовувати tmux для підтримки ssh сесії з mc (Midnight Commander):

  1. Встановлення tmux: Якщо tmux ще не встановлено, встановіть його на локальній машині та, якщо можливо, на віддаленій машині. В Ubuntu це можна зробити через `sudo apt-get install tmux`.

  2. Запуск tmux: Перед тим, як виконати ssh з'єднання до віддаленого сервера, запустіть tmux у терміналі на локальній машині, введіть `tmux`. Це відкриє нову сесію tmux.

  3. SSH з'єднання через tmux: Виконайте ssh з'єднання до віддаленого сервера з вікна tmux. Тепер, якщо ви запускаєте mc і ваше з'єднання обірветься, ви зможете під'єднатися назад до цієї сесії.

  4. Відновлення сесії tmux: Після відновлення з'єднання з вашим локальним терміналом, використовуйте команду `tmux attach`, щоб повернутися до існуючої сесії tmux, де виконується mc.

  5. Додаткові команди tmux:

    • `tmux new -s назва_сесії` для створення нової сесії з певною назвою.

    • `tmux ls` для перегляду усіх сесій.

    • `tmux attach -t назва_сесії` для підключення до певної сесії.

    • `tmux kill-session -t назва_сесії` для закриття певної сесії.

Цей підхід забезпечить, що ваша робота в mc на віддаленому сервері не буде втрачена при обриві з'єднання і ви зможете швидко повернутися до роботи без необхідності перезапускати mc та знову налаштовувати робоче середовище.

Подякували: leofun011

7

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

Еее, стоп. У вас просто так налаштовано, шо інтернет вимикається, коли ноут йде в suspend, якшо то у вас саме suspend.

8 Востаннє редагувалося frz (24.03.2024 00:34:29)

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

FakiNyan написав:

Еее, стоп. У вас просто так налаштовано, шо інтернет вимикається, коли ноут йде в suspend, якшо то у вас саме suspend.

Так, це саме suspend, крім того виходячи з дому вимикаю живлення помешкання на щитку, тож от не знаю чи допоможе тут tmux... Воно не те щоб величезний гемор відновлювати вручну всі з'єднання після пробудження ноута, але таких потрібних з'єднань стає дедалі більше і тому думаю як би це пофіксити.

Upd: От якщо йдеться про щось запущене на одному віддаленому сервері, то тут стає у пригоді mosh, він відновлюється сам при відновленні з'єднання; зникає якщо віддалений сервер перезавантажується без варіантів автоматичного відновлення; також зникає якщо перезавантажити локальний ноут, потім щось пише про можливість відновлення, однак щось ніяк не розберуся як це робити.

9 Востаннє редагувалося FakiNyan (24.03.2024 06:18:08)

Re: tmux: як відкрити 3 панелі та виконати shell команду на кожній

А, то вам тре відновити, а не підтримувати . Тоді хз, тре пробувать.