2009-04-30 12 views
5

Mon application Windows 32 bits interactive (maintenant déplacée de Delphi [Ent] 2007 à 2009) utilise des interactions de ligne de commande pour engendrer des processus enfants qui effectuent des tâches informatiques, qui à leur tour écrivent des fichiers texte que l'application parent GUI analyse. analyses - résultant en un affichage graphique interactif des résultats.Comment générer un processus Linux à partir d'une application Windows?

J'ai accès à un cluster Linux multiprocesseur (multi-utilisateurs) (via ssh), et je voudrais décharger les lourdes charges de ce cluster. Ma question est comment générer les processus sous Linux à partir de mon application Windows. Je peux envisager d'utiliser FTP sécurisé pour mettre et obtenir des fichiers, mais je ne sais pas comment générer les processus enfants sous Linux.

Certains prospects pour une lecture ultérieure seraient bien - mais le code/pseudocode serait idéal. Je peux imaginer que cela peut être plus sur l'interaction Windows-Linux que Delphi.

Répondre

6

Si vous avez accès à ssh, une option consiste à émettre des commandes. Par exemple:

ssh [email protected] ls -l ~ 

sera dans le terminal ssh afficher les fichiers dans le répertoire personnel de l'utilisateur. Je ne suis pas sûr si c'est ce que tu veux vraiment. Mais cela fonctionnerait probablement.

Si vous faites cela, vous certainement voulez configurer SSH password less logins

Cependant, une solution plus idéale serait probablement d'installer un démon sur les boîtes de Linux dont la seule tâche est d'exécuter des tâches spécifiques à long cours d'exécution en arrière-plan et laissez-vous aller chercher les résultats plus tard.

+0

Je ne connaissais pas ce style de commande à distance - facile à essayer, de toute façon. – Argalatyr

5

Vous allez devoir installer quelque chose sur la machine Linux pour lancer le processus. Vous pouvez trouver une sorte d'API de regroupement ou de soumission de travaux par lots que vous pouvez installer et accéder à partir de Windows. Vous devrez peut-être coder un serveur personnalisé. Vous pourriez être en mesure d'exécuter tout sur SSH si vous pouvez conduire un processus SSH à partir de Windows et si vous avez installé sshd sur le côté Linux. Mais ma préférence serait d'écrire un webservice ou un simple script CGI du côté Linux, conçu pour prendre vos arguments et vos données et renvoyer le résultat sur un ancien http (ou https selon le cas).

D'une manière ou d'une autre, cela va englober plus que le simple codage du côté Windows.

+0

Je suis d'accord que c'est probablement la solution idéale, mais comme vous le suggérez, cela présente un peu plus d'une courbe d'apprentissage pour moi - ce qui pourrait être une bonne chose à long terme! – Argalatyr

+2

+1 L'utilisation d'un serveur personnalisé présente de nombreux avantages. Surtout que (en fonction de la langue utilisée pour l'écrire) des choses peuvent être écrites et déboguées sur Windows (localement), puis être déployées sur un grand nombre de plates-formes différentes, même sans sshd. Si vous utilisez FPC ou Mono, vous pouvez utiliser vos connaissances Pascal/Delphi, vous avez donc une longueur d'avance. Il a également l'avantage de contrôler le processus et de lire/écrire des données en utilisant le même mécanisme. Plus facile à mettre à l'échelle sur les nœuds de serveurs multiprocesseurs. – mghie

+1

Argalatyr - vous ne devez pas coder prématurément le serveur personnalisé, vous devez installer nginx ou lighttpd et les configurer pour appeler vos applications de travail à un chemin donné via l'interface CGI ou FastCGI. Le serveur prendrait soin d'exécuter de nombreuses applications de travail et de les fermer quand elles ne seraient plus nécessaires. Je pense que tu ferais mieux d'apprendre nginx plutôt que ssh. Si le protocole HTTP basé sur du texte gonfle les données, le protocole HTTP prend en charge le mode Zip/Unzip transparent si la bibliothèque client et le serveur sont tous deux compatibles. –

5

Je téléchargerais le paquet "putty" complet.

En plus de l'excellent terminal sécurisé, il inclut PSCP pour transférer des fichiers en toute sécurité et PLINK pour exécuter des commandes à distance via SSH. Astuce: vous devrez configurer la configuration complète de la clé publique/privée pour que PLINK fonctionne sans une invite de mot de passe gênante. Il y a un guide utile http://unixwiz.net/techtips/putty-openssh.html>ici.

+0

J'utilise du mastic mais j'avais négligé le plink - très utile, merci. – Argalatyr