某些服务都用TCP端口来标识, 因此第一步可以用端口是否活着来确定服务是否可用, 如Oracle的Listener等. 用Perl代码可以很方便地实现这一功能.

#
# isPortAlive
#
sub isPortAlive
{
    my ($host,$port) = @_;
    my $status = "???";

    eval {
        local $SIG{ALRM} = sub { die "???\n" }; # NB: \n required
        alarm 10;
        use IO::Socket;
        my $sock = new IO::Socket::INET (
                  PeerAddr => $host,
                  PeerPort => $port,
                  Proto => 'tcp');
        $status = "OK" if (defined($sock));
        close ($sock);
        alarm 0;
    };
    chomp($status);

    scalar $status;
}

    有些监控自已加强一下, 也未必是坏事.