Как мне запустить сеанс tmux на удаленной машине, а также запустить команду в указанном сеансе tmux

Мне это не кажется правильным способом достижения этого. Я думаю, вы хотите нацелить хвостовой процесс [es], читающий файл, а не сам файл. Вместо этого рассмотрите что-то вроде следующего.

ps -ef | grep "[t]ail" | grep 'somefile.log' | tr -s ' ' | cut -d' ' -f2 | xargs kill
  1. ps -efотобразит все процессы, запущенные в вашей системе.
  2. grep "[t]ail"найдет все процессы с хвостом в имени (, за исключением этого grep ).
  3. grep 'somefile.log'найдет среди них файлы с somefile.log в имени.
  4. tr -s ' 'сожмет все множественные пробелы до одного.
  5. cut -d' ' -f2будет использовать пробел в качестве разделителя, чтобы получить только второй столбец, который является PID.
  6. xargs killубьет этот PID.

Это убьет все хвостовые процессы, читающие файл (, за исключением некоторых странных угловых случаев, например. файл журнала с именем tailsomefile.log ). Может быть более чистый способ сделать это, но это было первое сразу очевидное решение для меня. Я проверил, что это работает в Linux.

0
31.07.2019, 15:15
1 ответ

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

_SNAME="$1-$2"
TERM=xterm ssh -t x.y.z.com tmux new-session -A -s "$_SNAME" "ssh $1"

Вероятно, у вас происходит то, что команда 'sshне может быть найдена.

Вы также можете попробовать использовать "'ssh $1'"в качестве последнего аргумента, но это будет эквивалентно тому, что вы уже пытаетесь сделать.

0
28.01.2020, 03:25

Теги

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