Как подключиться к первому неприсоединенному сеансу tmux или создать новый сеанс, если непривязанных сеансов нет?

Изначально команда kill/системный вызов просто уничтожали процесс. Это было сделано ядром, и процесс просто исчез, так и не уведомившись об этом. Думаю, это остановилось на третьем издании. kill -9 указывает на отправку сигнала номер 9 процессу. В отличие от большинства (всех? он зависит )от других сигналов, процесс не может его «поймать» и каким-либо образом обработать. Более удобный способ остановить процесс — kill -15 (или kill -TERM ), который сообщает процессу, что он завершается, но дает ему возможность выполнить очистку.

Использование команды kill -9 является "гарантированным" способом уничтожения процесса; если он застрял, kill -15 может не всегда работать. Следовательно, многие люди до сих пор используют kill -9 в качестве «первого средства».

Причина, по которой «окончательный» сигнал уничтожения — номер 9, заключается в том, как они это сделали. В то время было по крайней мере еще восемь различных сигналов, и я предполагаю, что номера были присвоены человеком, который запрограммировал эту часть ядра (, вероятно, Кеном Томпсоном ). Некоторые из более низких чисел в настоящее время в значительной степени устарели, поскольку они отображаются на аппаратные инструкции и/или события в оборудовании PDP -11. А также много других выше 9.

Обратите внимание, что реальные числа не имеют уровней или иерархии; сигнал 8 ни в коем случае не является «меньше» сигнала 9 или «больше» сигнала 7.

2
09.07.2019, 00:39
1 ответ

Возможно, существует более простой способ сделать это с помощью самого tmux, не прибегая к сценариям оболочки. Но я заработал, объединив пару скриптов.

Первый сценарий выводит имя первого неприсоединенного сеанса. Это,tmux-first-unattached-session:

#!/usr/bin/env sh
# Print the name of the first tmux session that has no clients attached.
tmux ls -F '#{session_name}|#{?session_attached,attached,not attached}' 2>/dev/null | grep 'not attached$' | tail -n 1 | cut -d '|' -f1

Второй скрипт присоединяется к первому неприсоединенному сеансу или новому сеансу:

#!/usr/bin/env sh
# Attach to the first tmux session that has no attached clients.
# If there are no unattached sessions, then create a new session.
tmux attach -t `,tmux-first-unattached-session` 2> /dev/null || tmux
1
27.01.2020, 22:16

Теги

Похожие вопросы