Это - конкретное распределение, но несколько вещей я могу думать:
/etc/mtab
, /etc/adjtime
и /etc/resolv.conf
типичные файлы, которым, возможно, понадобится измененный. /etc/motd
и /etc/issue
мог бы быть также. cups
обновления некоторые его конфигурационные файлы отдельно также. Некоторые вещи могли бы хотеть создать a nologin
файл в /etc
также.
В большинстве экземпляров необходимо смочь заменить файл символьной ссылкой на одну под /var
.
Обычно, когда соединение SSH умирает, оболочка также умирает. Можно настроить оболочку для отправки сигнала-1 (SIGHUP), когда это завершается всем его детям.
Для удара можно настроить эту опцию через встроенную команду shopt. (shopt -s huponexit
).
Для zsh Вы хотите setopt
HUP
.
Если бы ssh не распространяет сигналы, он получает то, что Вы ожидали бы от него?
UPD. (особенный для JosephR): это - очевидно, сама рассматриваемая ошибка, которая следует из недоразумения — "Уничтожают процесс, порожденный ssh, когда ssh умирает". SSH обычно не порождает процессы (иногда, он делает, но это - другая история), SSHD делает вместо этого, когда мы смотрим на другую сторону соединения. SSH просто полагается на удаленный сервер абстракции псевдотерминала, имеет. Вот почему единственная вещь, которая может помочь, существует способность терминала испустить сигналы к ее приложенным процессам. Это является несколько очень простым для каждой подобной UNIX системы.
Вы можете использовать поиск для всех, включая размер ( man find
):
-size n[cwbkMG]
File uses n units of space. The following suffixes can be used:
`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes)
`M' for Megabytes (units of 1048576 bytes)
`G' for Gigabytes (units of 1073741824 bytes)
Так вы можете сделать:
find . -name "*.gz" -size -4k -mtime -1 -printf 'Failure %p\n'
find . -name "*.gz" -size -4k -mtime +1 -printf 'Success %p\n'
-121--166622- Вы можете скопировать ~/.gnupg/trustdb.gpg
с одной машины на другую.
Вы также можете экспортировать значения ownertrust (которые имеют значение) и импортировать их на новый компьютер:
gpg --export-ownertrust > otrust.txt
rm ~/.gnupg/trustdb.gpg
gpg --import-ownertrust < otrust.txt
См. gpg
manpage для получения подробной информации (хотя версия на сайте не говорит намного больше, чем у меня).
Я обнаружил, что простое использование -t -t
в качестве аргумента ssh
делает его работоспособным. Мне не пришлось устанавливать huponexit
в исходную или удаленную оболочку.
Я проверил это следующим образом:
ssh user@remote sleep 100
^C
Это остановило сеанс ssh, но я вижу, что процесс сна все еще выполняется на удаленном хосте ( ps -ef | grep sleep
).
ssh -t -t user@remote sleep 100
^C
Это убивает ssh-сеанс и удалённый процесс сна также был остановлен. Я также проверил, что сигнал, который посылается удаленному процессу, SIGINT
, если вы используете Control - C . Я также проверил, что SIGKILL (-9), примененный к процессу ssh
, также уничтожит удаленный процесс.
Значение для сна было
верно... для более упорных удаленных процессов я обнаружил, что ssh
обрабатывает ^ C иначе, чем SIGINT. Ctrl - C сработал, но kill -INT $ pid
не сработал.
Вот что я наконец-то придумал, что сработало для моего фактического приложения (кража из других ответов).
ssh -t -t -i id_rsa user@mic0 "/bin/sh -O huponexit -c 'sleep 100'"
Обратите внимание на вложенное использование двойных кавычек и одиночных кавычек. Обратите внимание, что ваш удаленный процесс ДОЛЖЕН ответить на SIGHUP, фактически выйдя!
Опубликованное здесь решение не сработало для меня, но поскольку этот вопрос возник первым, когда я искал решение аналогичной проблемы, а также -t -t
трюк был упомянут здесь, я опубликую решение, которое сработало для меня, чтобы другие могли попробовать.
ssh -t -t -o ControlMaster=auto -o ControlPath='~/test.ssh' your_remote_ip_goes_here "your_long_running_command" &
sleep 100
ssh -o ControlPath='~/test.ssh' -O exit your_remote_ip_goes_here
Моя длительная команда больше не выполнялась, когда соединение было разорвано таким образом.
ssh -t -t
, (заметьте-t
дважды!), который вызывает tty выделение, а не просто имущество. Примечание – Nicolas Wu 10.08.2014, 15:10