lsof /path/to/.file.swp
покажет идентификатор процесса нарушающего процесса vim. Если вы хотите написать скрипт, используйте, pid=$(lsof -Fp "$swp_file"); pid=$
чтобы получить только идентификатор процесса.
Тогда, ps 12345
где 12345 - это идентификатор процесса, будет отображаться некоторая информация о процессе, в частности, о том, что он запущен ( ps -o tty= -p $pid
в скрипте). Tty однозначно идентифицирует окно tmux (при условии, что процесс выполняется внутри tmux), но я не знаю, как перейти от имени tty к сеансу tmux.
Что бы дать вам сеанс tmux - это значение TMUX
переменной окружения в процессе vim. Номер сеанса - это последний номер после последней запятой.
У большинства объединений есть способ узнать среду процесса, но этот способ отличается в разных вариантах Unix. В Linux вы можете использовать </proc/$pid/environ grep -z '^TMUX='
для отображения значения $TMUX
в процессе $pid
, поэтому вы можете извлечь номер сеанса как $(</proc/$pid/environ grep -z '^TMUX=' | sed 's/.*,//')
.