Intereting Posts
Получайте электронную почту Pop / IMAP, а затем отправляйте ее в зашифрованном виде в gmail API-интерфейс REST без регистрации в журнале: как записать все HTTP-запросы и ответы в файл? команду для просмотра общих установленных пакетов в Slackware? Тип и скорость процессора с помощью команды lscpu Разрешения на внешний жесткий диск – ext4 (G) VIM использует другую $ PATH, чем моя система Обмен данными MySQL между Windows и Linux? Выполнить команду в определенное время в cygwin Каков наилучший способ разработки графического интерфейса на серверной машине? Поиск и замена всех имен Как переименовать файл и папку mp3 на основе тега ID3 Список папок, содержащих только подпапку под названием Attic Установка Virtual Python, не позволяющая ez_setup? Объединение записей из двух отсортированных файлов Программное обеспечение для регулировки кривой скорости MIDI-контроллера

Как определить, подключен ли tmux?

У меня есть Irssi, работающий в сеансе tmux, и я работаю над написанием сценария Irssi (расширение), чтобы отправить мне электронное письмо, когда кто-то из PM или упоминает меня, когда я не подключен к сеансу tmux.

Все об этом довольно легко, менее одно: как вы обнаруживаете, подключен ли сеанс tmux?

Я до сих пор понял это, и в основном здесь, чтобы узнать, подходит ли это для правильного / лучшего способа сделать это, или если я буду делать это по-другому. Любые советы приветствуются!

# Get the current session_name value from tmux $ tmux display -p '#{session_name}' 2 # Running list-clients while I'm attached yields the following, # from both the same window as well as another window: $ tmux list-clients -t 2 (null): 2 [180x42 (null)] # As well, running list-clients while detached yields no output: $ tmux list-clients -t 2 $ 

Все сказали, я думаю , что это правильный путь, но я, безусловно, открыт для любых лучших способов или предложений относительно того, как это проверить.

Хорошо, я думаю, что у меня есть нужные вам штуки, но я оставлю это вам, чтобы объединить их в сплоченное целое.

TMUX среды TMUX сообщит вам, работает ли текущий процесс в tmux или нет:

 <~> $ echo $TMUX /private/var/folders/1s/ff98nkc90mv7pfglffklcv8w0000gn/T/tmux-501/default,27570,8 

Последнее значение (8) – это идентификатор сеанса (который может или не может быть именем сеанса). В приведенном выше примере наш идентификатор сеанса равен 8, но у нас нет сеанса с именем «8»:

 <~> $ tmux ls 0: 1 windows (created Sat Nov 23 21:17:45 2013) [80x23] 1: 1 windows (created Sat Nov 23 21:17:45 2013) [120x34] bar: 2 windows (created Tue Nov 26 03:05:03 2013) [120x34] (attached) blech: 1 windows (created Tue Nov 26 03:12:46 2013) [120x34] (attached) 

Но мы можем получить эту информацию из tmux, используя строку формата -F:

 <~> $ tmux ls -F "#{session_name}: (#{session_id})" 0: ($0) 1: ($1) bar: ($5) blech: ($8) 

Затем вы можете использовать эту информацию, чтобы узнать, прилагается ли она:

 <~> $ tmux ls -F "#{session_id}: #{?session_attached,attached,not attached}" $0: not attached $1: not attached $5: attached $8: attached 

Дайте мне знать, если вам нужна помощь, чтобы собрать все это вместе.

Основываясь на советах Джейсонвриэна в комментариях, я получил следующие две команды.

Показывать текущее имя сеанса.

Поскольку мы находимся на языке сценариев, нам не обязательно знать идентификатор сеанса.

 tmux display -p '#{session_name}' 

Перечислите все сеансы по имени и их соответствующие статусы.

session_attached – это bool и представлен как одна цифра, что облегчает для большинства языков сценариев анализ этого выходного формата.

 # Show the session attached status for each session name. session_attached # is a single digit, either 0 or 1, making it easy to distinguish tmux ls -F '#{session_attached} #{session_name}' 

В Perl (плагины IRSSI) разбор этого формата вывода так же просто, как

 my ($attached, $name) = $line =~ /^(\d) (.+)$/;