Użyłem exec 3<>/dev/tcp/192.168.0.101/6435
do ustanowienia połączenia TCP z 192.168.0.101:6435. I otrzymałem, a także wysłałem kilka wiadomości z pipe
poleceniem.
Teraz chcę zakończyć połączenie TCP. Ale ss -anpet
widzę, że sama bash utrzymuje to połączenie, bez rozwodzenia procesu potomnego.
Próbowałem wysłać sygnał 9 i 15 do procesu bash, ale jak wiadomo, bash nie może się zabić.
Czy mogę zatem zakończyć nawiązane połączenie TCP bez przerywania używanych przeze mnie pkt. (Nie zabijając go przez root, ani wysyłając Ctrl + D)?
bash
z pewnością może się zabić - choć tak naprawdę nie chcesz tego tutaj robić!
pipe
polecenie, którego używasz, a którego nie mogę znaleźć w moim systemie? Z której paczki pipe
pochodzi? Jakie (przykładowe) parametry możesz mu przekazać, aby wysłać / odebrać dane przez /dev/tcp/...
połączenie? Dzięki.
/dev/tcp
, nawet nie mogę się znaleźć /dev/tcp
. Ale wydaje się, że jest to specjalne zastosowanie, za pomocą którego można wysyłać / odbierać dane pipe
i tego rodzaju pliki. Mówi się, że używa się go /dev/tcp/ip/port
do połączeń tcp i /dev/udp/ip/port
pakietów udp. Ponieważ mój angielski nie jest zbyt dobry, nie wiem, jak go poprawnie wyjaśnić. Edytuj pytanie i opublikuj odpowiedź.
pipe
polecenia. Spojrzałem na https://github.com/clsr/sedbot/blob/master/sedbot.bash
. Tam nie ma pipe
polecenia. Definiuje dwie funkcje: readmsg
i odpowiednio sendmsg
do odczytu / zapisu z / do połączenia. readmsg
używa IFS= read -r -u 3 -t "$READ_TIMEOUT" line
do odczytu z deskryptora pliku 3 do zmiennej line
i sendmsg
używa echo "$(date +%s.%N) >>> $line" >&4
do zapisu do deskryptora pliku 4. W każdym razie wyjaśnia to pełną metodę. Wspomnienie o „ pipe
rozkazie” wciąż pozostaje tajemnicą dla czytelników.
bash
tą skorupą?