Как сделать ssh для уничтожения удаленного процесса, когда я прерываю сам ssh?

Я просто добавил float:left в div, и он работал

22
задан unwind 3 December 2008 в 13:20
поделиться

4 ответа

Возможный я нашел решение как этот:

#/bin/bash
ssh -t -x root@db-host 'mysqldump db' -r file.sql

Так - я использую '-t' вместо '-n'. Удаление '-n' или использование другого пользователя, чем корень не помогают.

21
ответ дан 29 November 2019 в 05:26
поделиться

Вы знаете то, что делают опции, Вы являетесь передающими к ssh? Я предполагаю нет.-n вход перенаправлений опции от/dev/null, таким образом, процесс Вы работаете на удаленном хосте, вероятно, не видит SIGINT от Ctrl-C.

Теперь, давайте говорить о том, как плохо идея это должно позволить удаленные корневые логины:

Это действительно, действительно плохая идея. Взгляните на ПРАКТИЧЕСКОЕ РУКОВОДСТВО: настроенные ssh ключи для некоторых предложений, как надежно справиться с удаленным выполнением процесса по ssh. Если необходимо выполнить что-то с полномочиями удаленно, Вы, вероятно, захотите решение, которое связало ssh открытый ключ со встроенной командой и сценарием, который работает как корневая любезность sudo.

2
ответ дан 29 November 2019 в 05:26
поделиться
trap "some_command" SIGINT

выполнится some_command локально, когда Вы нажмете Ctrl+C. help trap скажет Вам о его других опциях.

Относительно эти ssh проблема, я не знаю много о ssh. Возможно, можно ли заставить его звонить ssh -n -x root@db-host 'killall mysqldump' вместо some_command для уничтожения удаленной команды?

1
ответ дан 29 November 2019 в 05:26
поделиться

По окончании сеанса ssh ваша оболочка получит сигнал SIGHUP. (сигнал отбоя). Вы должны убедиться, что он отправляет это всем процессам, запущенным с него. Для bash попробуйте shopt -s huponexit; ваша_команда . Это может не сработать, потому что на странице руководства сказано, что huponexit работает только с интерактивными оболочками.

Я помню, как сталкивался с этим с пользователями, выполняющими задания в моем кластере, и независимо от того, должны ли они использовать nohup или нет (чтобы получить поведение, противоположное тому, что вы хотите), но я не могу найти ничего на странице руководства bash о том, игнорируют ли дочерние процессы SIGHUP по умолчанию. Надеюсь, huponexit поможет. (Думаю, вы можете поместить этот магазин в свой .bashrc, а не в командную строку.)

Ваш ssh -t должен работать, однако, поскольку при закрытии соединения выполняется чтение с терминала получит EOF или ошибку,

3
ответ дан 29 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

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