Mam tę komendę socat, która działa dobrze, ale gdy żadne dane nie są przesyłane, umiera dokładnie po 5 minutach i nie rozumiem dlaczego, ponieważ ustawiłem, aby wysyłać 100 podtrzymujących co 10 sekund po pierwszych 10 sekundach . Z tego, co rozumiałem na stronie man socat, powinno to utrzymywać ją przy życiu przez 1000, czyli 16 minut. Ponadto, jeśli spróbuję ustawić keepcnt na 200, otrzymam „setsockopt (7, 6, 6, {200}, 4): Nieprawidłowy argument”, ale nigdzie w Internecie nie mogę znaleźć maksymalnej wartości tego argumentu, więc myślę Muszę tu przegapić coś bardzo oczywistego. Eksperymentowanie z argumentami nigdy nie zmieniało wartości limitu czasu 5 mln. Ustawienie niższej wartości dla keepcnt i wyższych wartości keepintvl jest akceptowane, ale po prostu nie ma widocznego efektu.
socat -d -d -d -v pty,link=/tmp/lp1 tcp:192.168.0.5:9100,reuseaddr,keepalive,keepidle=10,keepintvl=10,keepcnt=100
2017/05/31 08:53:01 socat [16065] I Ten produkt zawiera oprogramowanie opracowane przez OpenSSL Project do użytku w zestawie narzędzi OpenSSL. (http://www.openssl.org/) 2017/05/31 08:53:01 socat [16065] I Ten produkt zawiera oprogramowanie napisane przez Tima Hudsona ([email protected]) 2017/05/31 08:53:01 socat [16065] I ustawiam opcję „symbolic-link” na „/ tmp / lp1” 2017/05/31 08:53:01 socat [16065] I openpty ({5}, {6}, {"/ dev / pts / 1"} ,,) -> 0 2017/05/31 08:53:01 socat [16065] N PTY to / dev / pts / 1 2017/05/31 08:53:01 socat [16065] Ustawiam opcję „so-keepalive” na 1 2017/05/31 08:53:01 socat [16065] Ustawiam opcję „tcp-keepidle” na 10 2017/05/31 08:53:01 socat [16065] Ustawiam opcję „tcp-keepintvl” na 10 2017/05/31 08:53:01 socat [16065] Ustawiam opcję „tcp-keepcnt” na 100 2017/05/31 08:53:01 socat [16065] N połączenie otwierające do AF = 2 192.168.0.5:9100 2017/05/31 08:53:01 socat [16065] Zaczynam pętlę połączenia 2017/05/31 08:53:01 socat [16065] I socket (2, 1, 6) -> 7 2017/05/31 08:53:01 socat [16065] N pomyślnie nawiązano połączenie z adresu lokalnego AF = 2 192.168.0.4:56482 2017/05/31 08:53:01 socat [16065] Rozwiązałem i otworzyłem wszystkie adresy skarpet 2017/05/31 08:53:01 socat [16065] N początkowa pętla transferu danych z FD [5,5] i [7,7] 2017/05/31 08:58:01 socat [16065] N gniazdo 2 (fd 7) jest na EOF 2017/05/31 08:58:02 socat [16065] Upłynął czas odpytywania (brak danych w ciągu 0,500000 sekund) 2017/05/31 08:58:02 socat [16065] I close (5) 2017/05/31 08:58:02 socat [16065] I shutdown (7, 2) 2017/05/31 08:58:02 socat [16065] N wyjście ze statusem 0
źródło
Odpowiedzi:
Ze strony socjalnej dla
-t<timeout>
:Spróbuj dodać
ignoreeof
opcję.źródło
Jeśli używasz polecenia podobnego SŁUCHAJ
OPENSSL-LISTEN
,TCP-LISTEN
, itd,fork
opcja będzie spin off połączeń do procesu potomnego, dzięki czemu można kontynuować socat odbioru.Przykład:
Dzięki: https://unix.stackexchange.com/a/283289/15954
źródło