in reply to how to kill deattached process

ok ppl,

i don't think this gonna work . what i did is :

#!/usr/bin/perl use strict; my @mch = ('compute-0-0','compute-0-1'); my @children; for (my $i = 0;$i<=1;$i++){ my $pid = fork(); if ($pid){ push @children, $pid; } elsif ($pid == 0){ print $$ . "\n"; print "$mch[$i] \n"; exec("ssh $mch[$i] ./sleep.pl") || die "cannot execute process +\n"; exit; } else{ die "could not fork! \n"; } } foreach (@children){ waitpid($_,0); } sleep.pl #!/usr/bin/perl use strict; for (1..10000000){ my $rez = 1; for (1..500){ $rez *=$_; } }
and i get reported pid 1 = 9776 pid 2 = 9777 but on a compute-0-0 id of the proc is 24356 and on compute-0-1 4443

so the problem is sending a job to a remote machine and retrieving the pid of the process executed on that machine... any more ideas ??? or this really cannot be done ??

Update:

THE WRAPPER !!!! :) hey it's sunday (rough night last night :)) so :

#!/usr/bin/perl use strict; my @mch = ('compute-0-0','compute-0-1'); my @children; for (my $i = 0;$i<=1;$i++){ my $pid = fork(); if ($pid){ push @children, $pid; } elsif ($pid == 0){ exec("ssh $mch[$i] ./sleep.pl") || die "cannot execute process +\n"; exit; } else{ die "could not fork! \n"; } } foreach (@children){ waitpid($_,0); } ------ outside machine --- sleep.pl #!/usr/bin/perl use strict; print $$ ."\n"; exec("./speep"); sleep #!/usr/bin/perl use strict; for (1..10000000){ my $rez = 1; for (1..500){ $rez *=$_; } }
Thank you !!!!!!!!!

Replies are listed 'Best First'.
Re^2: how to kill deattached process
by salva (Canon) on Nov 01, 2009 at 14:20 UTC
    and i get reported pid 1 = 9776 pid 2 = 9777 but on a compute-0-0 id of the proc is 24356 and on compute-0-1 4443

    The value returned by fork is not the PIDs of the remote processes but the PID of the new local process (the one that will become ssh after the exec call).

    On the remote machine, when the SSH connection is stablished, sshd forks a new process that then forks a new shell that finally forks and executes the requested command.