Как порождать процесс Linux из приложения Windows?
Мое интерактивное 32-разрядное приложение для Windows (которое теперь переходит от Delphi [Ent] 2007 к 2009) использует взаимодействия командной строки для порождения дочерних процессов, которые выполняют задачи, требующие больших вычислительных ресурсов, которые, в свою очередь, пишут текстовые файлы, которые родительское приложение GUI анализирует и анализирует - в результате чего интерактивное графическое отображение результатов.
У меня есть доступ к многопроцессорному (многопользовательскому) кластеру Linux (через ssh), и я хотел бы перенести тяжелую работу на этот кластер. Мой вопрос - как порождать процессы в Linux из моего приложения для Windows. Я могу представить себе использование безопасного FTP для размещения и получения файлов, но не знаю, как порождать дочерние процессы в Linux.
Некоторые выводы для дальнейшего чтения были бы хороши - но код / псевдокод был бы идеальным. Я могу предположить, что это может быть больше о взаимодействии Windows-Linux, чем Delphi.
3 ответа
Если у вас есть доступ к ssh, одним из вариантов является ввод команд через него. Например:
ssh user@host ls -l ~
в терминале ssh покажет файлы в домашнем каталоге пользователя. Я не уверен, что это то, что вы действительно хотите. Но это, вероятно, сработает.
Если вы сделаете это, вы почти наверняка захотите установить пароль SSH без логинов
Тем не менее, более идеальным решением, вероятно, будет установка демона на Linux-блоках, единственной задачей которого является запуск определенных долгосрочных задач в фоновом режиме и возможность получения результатов позже.
Вам нужно будет что-то установить на машину Linux, чтобы запустить процесс. Вы можете найти какой-нибудь API-интерфейс кластеризации или пакетной передачи, который вы можете установить и получить к нему доступ из Windows. Возможно, вам придется кодировать пользовательский сервер. Возможно, вы сможете запустить все через ssh, если сможете управлять процессом ssh из Windows и если у вас установлен sshd на стороне Linux. Но я бы предпочел написать веб-сервис или простой CGI-скрипт на стороне Linux, предназначенный для получения ваших аргументов и данных и возврата результата через обычный старый http (или https в зависимости от обстоятельств).
Так или иначе, это будет охватывать больше, чем просто кодирование на стороне Windows.
Я бы скачал полный пакет "замазка".
Помимо превосходного защищенного терминала оболочки, он включает PSCP для безопасной передачи файлов и PLINK для удаленного выполнения команд по SSH.
Подсказка: вам нужно будет настроить полную конфигурацию открытого / закрытого ключа, чтобы PLINK работал без раздражающего запроса пароля. Есть полезное руководство http://unixwiz.net/techtips/putty-openssh.html> здесь.