Как автоматически перезапускать вложенные сеансы tmux при возвращении в онлайн?

Если программа Awk имеет «средний» или ENDблок, то считывается ввод. Мы можем противодействовать этому, предоставляя нулевой ввод:

$ cat prog.awk
1
END {
  print "fin"
}

$ awk -f prog.awk /dev/null
fin

Если мы хотим, чтобы это было по умолчанию, мы можем добавить блок в «help.awk»:

BEGIN {
  if (ARGC == 1 && !system("[ -t 0 ]")) {
    ARGV[ARGC++] = "/dev/null"
  }
}

Однако это создает важное изменение; Awk не будет читать с терминала, если вы добавляете тире:

awk -f help.awk -f prog.awk -

или изменить "prog.awk":

getline < "-"

Пример ввода показаний:

$ cat prog.awk
/4/ {
  really_exit()
}
1
END {
  print "fin"
}

$ seq 10 | awk -f help.awk -f prog.awk
1
2
3

Пример ввода без чтения:

$ cat prog.awk
BEGIN {
  print "start"
  really_exit()
}
END {
  print "fin"
}

$ awk -f help.awk -f prog.awk
start
0
27.03.2020, 09:24
1 ответ

Вы можете просто запустить что-то подобное в каждом окне:

while :; do ssh $i tmux a; sleep 1; done

Или напишите скрипт, который периодически проверяет окна и использует respawn-paneили respawn-windowдля их перезапуска при необходимости.

1
19.03.2021, 02:32

Теги

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