Как лучше всего включить команду, работающую на экране на первом компьютере, чтобы продолжать выполнять команды на втором компьютере после того, как я больше не подключен к первому?
Вот предыстория. У меня есть давно работающая команда, которая должна регулярно собирать информацию с других машин. Он делает это, отправляя команды ssh и читая вывод. В настоящее время это работает через агентов ssh, потому что я вошел в систему с ForwardAgent
.
В настоящее время я могу подключиться к первой машине по ssh, запустить команду, и она работает. Точно так же я могу запустить экран, выполнить команду, отключиться от экрана, и он продолжит работу. Но если мое ssh-соединение с первой машиной прерывается, то агент ssh перестает работать, и команда, выполняемая на экране, прерывается.
Я бы хотел, чтобы команда могла работать правильно, даже если я больше не подключен ни к одной из машин.
AFAIK, это невозможно. Закрытые ключи, используемые агентом, никогда не передаются на этот промежуточный сервер. Если ваше соединение с промежуточным сервером потеряно, использовать для аутентификации просто нечего. Протокол агента спроектирован так, чтобы ваши личные ключи никогда не передавались из системы, в которой запущен агент.
Если вы часто выполняете работу в этой промежуточной системе, лучшим вариантом может быть создание пары ключей, уникальной для этой системы, и загрузка ее в агент, работающий в этой системе, при входе в систему и запуске процесса. Очевидно, вам также потребуется опубликовать связанный открытый ключ для всех систем, к которым вам нужен доступ.
Вы пробовали смотреть на "nohup"?
http://linux.101hacks.com/unix/nohup-command/
Похоже, в данном случае это может быть вам полезно.
Вы можете увидеть дополнительную информацию, используя $ man nohup