El servidor FTP sigue deteniéndose (Mavericks)

3

En una MacPro en una oficina remota, habilité el servidor FTP con

sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist

Ahora funciona, pero al descargar un archivo grande, se servirá durante unos segundos, luego se detendrá por completo por un minuto o más ... luego se reanudará (usando lftp con varias conexiones).

Me gusta esto:

¿Hay alguna manera de arreglar esto? ¿O hay un servicio de servidor FTP más confiable que podríamos usar?

brew search ftp me muestra

bbftp-client   git-ftp        ncftp      pure-ftpd      vsftpd
curlftpfs      lftp           proftpd    uberftp

¿Alguno de estos servidores FTP podría configurarse como un 'servicio' siempre activo?

ACTUALIZACIÓN: instalé pure-ftpd, lo puse en marcha y estoy haciendo lo mismo. 34mbps por 10 segundos, luego 0 por 30 más o menos ... ¿qué está pasando?

    
pregunta Ze'ev 09.08.2014 - 04:41

1 respuesta

1

¿Podría probar su conexión de extremo a extremo con esta simple secuencia de comandos basada en ping output:

#!/bin/sh
# $Id: coupure.sh,v 1.1 2012/09/05 13:11:10 dan Exp dan $
_host_exist='host $1'
expr "${_host_exist}" : '.*address' >/dev/null || {
        echo ${_host_exist} >&2
        exit 1
}

ping $1 2>/dev/null |
        perl -e  '
                use strict ;
                use warnings ;

                my $started = 0 ;
                my $start = 0 ;
                my $end = 0 ;
                my $count = 0 ;
                my $was_down = -1 ;
                my $last_up = -1 ;
                my $last_hole = 0 ;
                my $now = 0 ;
                my $x = -1 ;
                my $hour = -1 ;
                my $min = -1 ;
                my $sec = -1 ;
                my $hole = 0 ;
                my $delta = 0 ;
                my $time_run = 0 ;
                my $sum_hole = 0 ;
                my $avg_hole = 0 ;
                my $sum_delta = 0 ;
                my $avg_delta = 0 ;

                sub catch_int {
                        $end = time () ;
                        $time_run = $end - $start ;
                        printf ("\ntime run = %14d s,\tdrop count =  %8d", $time_run, $count) ;
                        if ($time_run) {
                                printf (",\t %8.2f / d\n", $count * 86400 / $time_run) ;
                        } else {
                                printf ("\n") ;
                        }
                        if ($count) {
                                $avg_hole = $sum_hole / $count ;
                                printf ("avg drop time =  %8.2f s\n", $avg_hole) ;
                                if ($count > 1) {
                                        $avg_delta = $sum_delta / ($count - 1); 
                                        printf ("avg int. time =  %8.2f s\n", $avg_delta) ;
                                }
                        }
                        exit ;
                }

                $start = time () ;

                $SIG{INT} = \&catch_int ;

                while () {
#                       printf ("%s", $_) ;

                        if (! $started) {
#                               printf ("%s", $_) ;
                                if ($_ =~ /PING/ ) { next ; }
                                if ($_ =~ /bytes/) {
                                        $was_down = 0 ;
                                } else {
                                        $was_down = 1 ;
                                }
                                $started = 1 ;
                        } else {
                                if ($_ =~ /bytes.*icmp_seq=/) {
#-------+-------+-------+-------+-------+-------+-------+-------+
#                                       target is up
#                                       printf ("!") ;
                                        if ($was_down == 1) {

                                                $count ++ ;
                                                printf ("%4d\t", $count) ;
                                                ($sec, $min, $hour, $x, $x, $x, $x, $x, $x) = localtime ($last_up) ;
                                                printf ("%02d:%02d:%02d\t", $hour, $min, $sec) ;
                                                $now = time () - 1 ;
                                                ($sec, $min, $hour, $x, $x, $x, $x, $x, $x) = localtime ($now) ;

                                                printf ("-\t%02d:%02d:%02d\t", $hour, $min, $sec) ;
                                                $was_down = 0 ;
                                                $hole = $now - $last_up ;
                                                $sum_hole += $hole ;
                                                printf ("= %4d s", $hole) ;

                                                if ($last_hole) {
                                                        $delta = $last_up - $last_hole ;
                                                        $sum_delta += $delta ;
                                                        printf (" + %6d s\n", $delta ) ;
                                                } else {
                                                        printf ("\n") ;
                                                }
                                                $last_hole = $last_up ;
                                        }
                                        $last_up = time() ;
                                } else {
#-------+-------+-------+-------+-------+-------+-------+-------+
#                                       target is down
                                        if ($was_down == 0 ) {
                                                $was_down = 1 ;
                                        }
                                }
                        }
                }'

Simplemente copia esto en coupure.sh en tu cliente ftp, escriba make coupure y ejecútelo:

./coupure target_ftp_server
    
respondido por el daniel Azuelos 11.08.2014 - 22:59

Lea otras preguntas en las etiquetas