3

Это общая версия: отправка сигнала SIGTERM процессу, работающему внутри ssh

Можно отправить Ctrl-C удаленному процессу, если процесс получает pty (-tt):

# Runs for 5 seconds
(sleep 5; echo '^C'; sleep 5) | time ssh -tt localhost burnP6

Я надеялся, что то же самое будет работать для Ctrl-Z, но, увы, нет:

# Continues to run - does not suspend
(sleep 5; echo '^Z'; sleep 5) | time ssh -tt localhost burnP6

Если я получаю интерактивный сеанс, Ctrl-C и Ctrl-Z работают нормально.

Есть ли способ, которым я могу отправить другие сигналы (меня особенно интересует Ctrl-Z)?

Я не могу использовать предложенный «ssh hostname 'kill -TERM $ pid'", так как я не знаю pids в удаленной системе.

1 ответ1

0

Вы действительно нуждаетесь в tty?

Вы можете просто использовать ssh server killall burnP6 , если существует только один процесс с таким именем.

Или вы можете как-то записать IP вашего процесса в файл, а затем использовать что-то вроде `ssh server kill $(cat /tmp/burnP6.pid)".

Или более простой и надежной реализацией было бы использование демона пакета, предназначенного для того, чтобы демонизировать программы, не являющиеся демонами. Это позволяет автоматически записывать PID вашего демона в файл и легко его уничтожать. Это может даже перезапустить ваш процесс в случае его смерти.

Чтобы начать это:

ssh server daemon -n burnP6 -- /usr/bin/burnP6

Чтобы остановить это:

ssh server daemon --stop -n burnP6 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .