Автор, вероятно, никогда не пробовал это. В руководстве говорится об этой fork
опции:
После установления соединения обрабатывает свой канал в дочернем процессе и удерживает родительский процесс, пытающийся создать больше соединений, путем прослушивания или соединения в цикле (пример).
Это означает, socat
что не будет разветвляться до запуска основного цикла прослушивания.
-d
Вариант только увеличивает подробность (как в debug
).
tl; dr: socat
не могу этого сделать.
Исходное дерево содержит этот вспомогательный скрипт для запуска socat
в фоновом режиме. Вы можете адаптировать его к своим целям. Я не писал этот сценарий!
#! /bin/sh # source: daemon.sh # Copyright Gerhard Rieger 2001 # Published under the GNU General Public License V.2, see file COPYING # This script assumes that you create group daemon1 and user daemon1 before. # they need only the right to exist (no login etc.) # Note: this pid file mechanism is not robust! # You will adapt these variables USER=daemon1 GROUP=daemon1 INIF=fwnonsec.domain.org OUTIF=fwsec.domain.org TARGET=w3.intra.domain.org INPORT=80 DSTPORT=80 # INOPTS="fork,setgid=$GROUP,setuid=$USER" OUTOPTS= PIDFILE=/var/run/socat-$INPORT.pid OPTS="-d -d -lm" # notice to stderr, then to syslog SOCAT=/usr/local/bin/socat if [ "$1" = "start" -o -z "$1" ]; then $SOCAT $OPTS tcp-l:$INPORT,bind=$INIF,$INOPTS tcp:$TARGET:$DSTPORT,bind=$OUTIF,$OUTOPTS </dev/null & echo $! >$PIDFILE elif [ "$1" = "stop" ]; then /bin/kill $(/bin/cat $PIDFILE) fi