Alors, quand je lance ce code, il semble que le système soit bombardé par le système, les gars peuvent-ils m'aider? Tout ce que je veux faire est de démarrer un thread pour chacun des domaines et des environnements appWatch.Perl: Pourquoi cela crée-t-il des milliers de processus fils?
#!/usr/bin/perl
#
#
# Starts the mass processes to watch each directory & enviroment.
#
#
#
###################################################################################
use strict;
use warnings;
use POSIX 'setsid';
setsid();
my @domains = (qw(austin batman luke heman drevil joker skeltor drevil goodguy badguy));
my @envs = (qw(qa dev));
foreach my $env (@envs){
foreach my $guy (@domains){
unless(my $pid = fork()){
system("echo $env.$guy");
system("sleep 10 ");
#system("./appWatch -d $guy -e $env");
open PID, ">>pid.lock";
print PID $$ . "\n";
print "$$ is Parent, $pid is child";
}
}
}
wait();
Ok Cool une fois que je reçois le système de sauvegarde, je vais poster le mauvais code mais le vôtre fonctionne très bien. Merci! Ma deuxième question, si vous le pouvez, comment puis-je faire en sorte que si ce script est tué, il tue tous ses enfants? –
@Nerdatastic Au sommet de ma tête, vous pouvez vous souvenir de tous les IP enfants dans un tableau et utiliser un bloc 'END' pour les" tuer ":' END {kill 15, @pids} '. –
Je viens de mettre à jour le code avec celui qui a planté le système que je suis en utilisant votre solution modifiée pour le moment. –