Если Perl является опцией, вы можете использовать его модульIO::Socket
для проверки подключения к определенному хосту и порту; сценарий ниже hard -кодирует TCP как протокол (, который будет использовать telnet):
#!/usr/bin/perl -w
# tries to connect to the given IP and port (tcp)
use strict;
use IO::Socket;
my $desthost = shift or die "Usage: $0 host port\n";
my $destport = shift or die "Usage: $0 host port\n";
gethostbyname($desthost) || die "Invalid host given\n";
my $handle = IO::Socket::INET->new(
PeerAddr => $desthost,
PeerPort => $destport,
Proto => 'tcp')
or die "can't connect to $desthost:$destport: $!\n";
close $handle;
print "Success!\n"
Пример вывода из закрытого порта:
$./above-script kafka02 6667
can't connect to kafka02:6667: Connection refused
Пример вывода из открытого порта:
$./above-script kafka02 4200
Success!
Вы можете использовать systemd
Создать файл например/etc/systemd/system/yourapplication.service
[Unit]
Description=Your Super application
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
StartLimitIntervalSec=500
StartLimitBurst=5
[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/path/to/application
[Install]
WantedBy=multi-user.target
Или старый способ — запустить приложение с помощью init.
Добавить в скрипт инициализации строку
ap:2345:respawn:/bin/sh /somewhere/start-app
С ad
id вашего сервиса (максимум 2 буквы)
2345
Список уровней выполнения, к которым применяется эта запись.
respawn
для действия
затем команда для запуска