#python #fabric #tmux
#python #fabric #tmux
Вопрос:
Есть ли способ изменить tmux
заголовок окна с python. Я использую fabric
для автоматизации развертывания длительно выполняющихся заданий, поэтому я могу запускать задания в отключенном режиме в tmux
. (возможно, это не fabric
связанный вопрос, но я думаю, что люди, которые использовали fabric, могли столкнуться с этой проблемой) Я понимаю, что что-то вроде приведенного ниже может быть использовано для создания нового сеанса и запуска команд в этих сеансах.
with Connection("ip") as cxn:
cxn.run("tmux new -d -s session_name")
cxn.run("tmux send -t session_name.0 ls ENTER")
Есть ли способ создать новое окно с определенным заголовком и вызвать его следующим образом:
with Connection("ip") as cxn:
if cxn.run("tmux has -t session_name", warn=True, hide="err").exited != 0:
cxn.run("tmux new -d -s session_name")
cxn.run("tmux new -d -s session_name -n windown_name")
cxn.run("tmux send -t session_name.window_name ls ENTER")
Ответ №1:
Я не уверен, что это то, что вы хотите, но это создаст новый сеанс с именем «dev», и внутри этого сеанса он создаст заголовок окна «win1» и запустит python
repl в этом окне.
with Connection("ip") as cxn:
cxn.run('''tmux new-session -s "dev" -n "win1" ; send-keys 'python' C-m ;''')
Комментарии:
1. Похоже, что tmux не идентифицирует ни одно окно с именем —
session_name.window_name
. В нем есть только концепция номеров окон. Названия окон используются не для справки, а для того, чтобы пользователи могли идентифицировать окна.
Ответ №2:
Способ, которым tmux ссылается на имена окон, — двоеточие — :
так что теперь это работает —
with Connection("ip") as cxn:
if cxn.run("tmux has -t session_name", warn=True, hide="err").exited != 0:
cxn.run("tmux new -d -s session_name")
cxn.run("tmux new-window -t session_name -n windown_name")
cxn.run("tmux send -t session_name:window_name ls ENTER")
Без полного знания того, как tmux
работает, трудно проработать такие детали. После прочтения руководства по написанию сценариев tmux здесь и углубления в код libtmux
здесь (библиотека python для управления tmux
) Я подумал, что это :
должно быть то, что нужно использовать, и это работает для меня.