2009-09-11 5 views
0

J'exécute plusieurs fichiers de traitement par lots dans une machine distante à l'aide d'un script Perl résidant sur la machine locale et je souhaite exécuter ces fichiers de traitement par lots pendant une longue durée.Comment puis-je utiliser Perl pour démarrer un processus distant et ne pas attendre qu'il se termine?

Le problème est que le programme Perl qui s'exécute sur la machine locale s'arrête et n'exécute les commandes ultérieures qu'après la fin des fichiers batch. Je veux exécuter des fichiers batch dans une machine distante et je veux exécuter le reste des commandes dans mon script Perl sans s'arrêter.

S'il vous plaît aidez-moi.

Répondre

2

Comment utilisez-vous les processus distants? La meilleure réponse dépendra probablement de la mise en œuvre spécifique. Mais en supposant que vous utilisez quelque chose comme Net :: SSH ou Expect ou une sorte de mécanisme RPC, la chose la plus facile est probablement un nouveau processus pour exécuter le travail à distance, puis continuer avec votre script.

my $pid = fork; 
if ((defined $pid) and $pid == 0) {  
    # child process 
    do_remote_batch_jobs(); 
} elsif (defined $pid) { 
    # parent process 
    do_other_stuff(); 
} else { 
    # fork error 
    die "Unable to fork: $!"; 
} 
+0

Je suis en cours d'exécution processus à distance en utilisant rsh ma commande $ = « rsh perl ; système (commande $); j'ai créé programme Perl dans la machine à distance pour exécuter les fichiers de traitement par lots et ce fichier de commandes s'exécute avec succès, mais les commandes après ce système (commande $) qui est dans la machine locale ne s'exécute pas jusqu'à ce que le fichier de commandes se termine –

1

Oui, vous pouvez utiliser une fourchette mais je pense qu'une meilleure solution serait d'avoir un script à la machine distante qui accepte un traitement par lots et retourne son identifiant.
En outre, l'état actuel d'un travail soumis peut être récupéré en utilisant le même script. De cette façon, le client (c'est-à-dire votre machine) serait indépendant de la gestion des tâches.

Questions connexes