Мне это не кажется правильным способом достижения этого. Я думаю, вы хотите нацелить хвостовой процесс [es], читающий файл, а не сам файл. Вместо этого рассмотрите что-то вроде следующего.
ps -ef | grep "[t]ail" | grep 'somefile.log' | tr -s ' ' | cut -d' ' -f2 | xargs kill
ps -ef
отобразит все процессы, запущенные в вашей системе. grep "[t]ail"
найдет все процессы с хвостом в имени (, за исключением этого grep ). grep 'somefile.log'
найдет среди них файлы с somefile.log в имени. tr -s ' '
сожмет все множественные пробелы до одного. cut -d' ' -f2
будет использовать пробел в качестве разделителя, чтобы получить только второй столбец, который является PID. xargs kill
убьет этот PID. Это убьет все хвостовые процессы, читающие файл (, за исключением некоторых странных угловых случаев, например. файл журнала с именем tailsomefile.log ). Может быть более чистый способ сделать это, но это было первое сразу очевидное решение для меня. Я проверил, что это работает в Linux.
Ваше цитирование (возможно, )перепутано. Возможно, потому что ваша команда, кажется, работает для меня. Вместо того, чтобы отправлять буквальные одинарные кавычки, просто убедитесь, что команда заключена в кавычки:
_SNAME="$1-$2"
TERM=xterm ssh -t x.y.z.com tmux new-session -A -s "$_SNAME" "ssh $1"
Вероятно, у вас происходит то, что команда 'ssh
не может быть найдена.
Вы также можете попробовать использовать "'ssh $1'"
в качестве последнего аргумента, но это будет эквивалентно тому, что вы уже пытаетесь сделать.