Как выполнить код в новом сеансе tmux - из текущего сеанса?

Это классический случай использования для awk

awk '$1 ~ /6314/' file

или, если вы хотите передать шаблон для сопоставления в качестве переменной

awk -v pat="6314" '$1 ~ pat' file

Аналогичный подход в perl

perl -ane 'print if $F[0] =~ /6314/' file
12
06.01.2017, 19:01
3 ответа

Если вы поместите код, который хотите выполнить, например, /opt/my_script.sh , делать то, что вы хотите, очень легко:

tmux new-session -d -s "myTempSession" /opt/my_script.sh

Это запускает новый отдельный сеанс с именем «myTempSession», выполняющий ваш сценарий. Позже вы можете присоединиться к нему, чтобы проверить, что он делает, выполнив tmux attach-session -t myTempSession .

Это , на мой взгляд, наиболее простое и элегантное решение. Я не знаю ни одного простого способа выполнения команд из stdin (читай «из heredocs») с помощью tmux. Взломав что-то, вы, возможно, даже сможете это сделать, но это все равно будет (и будет выглядеть) взломом.

Например, вот хак, который использует команду, которую я предложил выше, для имитации желаемого поведения (= выполнение кода в новом сеансе tmux из heredoc.Запись на жесткий диск сервера не производится, поскольку создается временный файл / dev / shm , который является tmpfs):

(
  cat >/dev/shm/my_script.sh &&
  chmod +x /dev/shm/my_script.sh &&
  tmux new-session -d '/dev/shm/my_script.sh; rm /dev/shm/my_script.sh'
) <<'EOF'
    echo "hacky, but works"
EOF
37
27.01.2020, 19:55

Также см.https://serverfault.com/questions/339390/run-command-in-detached-tmux-sessionдля примеров использования команды отправить -клавиши на отдельной панели.

2
27.01.2020, 19:55

Смешивая приведенное выше решение, я нашел другой способ добиться того же (, предполагая bash):

#!/bin/bash

wantTmuxExecute() {
   sleep 30m ;
   rm -rf dir_name ; 
  ...
}
# send to tmux
type wantTmuxExecute | tail -n +2 > /dev/shm/wantInTmux.sh

# execute tmux
tmux new-session -d 'source /dev/shm/wantInTmux.sh ; rm /dev/shm/wantInTmux.sh'
tmux send-keys 'wantTmuxExecute'
1
17.04.2020, 07:49

Теги

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