与 systemd 集成时仅启动 socat 进程

与 systemd 集成时仅启动 socat 进程

我想运行“socat”命令将端口 162 上的信息复制到另一台计算机的同一端口上。

我添加了一个 systemd 来执行此过程:

[Unit]
Description=Socat SNMP Traps 162

[Service]
User=root
Type=forking
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=socat-trap-162

ExecStart=sudo socat -d -d UDP-LISTEN:162,fork UDP:10.127.130.70:162
Restart=on-failure

[Install]
WantedBy=multi-user.target

然而,当运行systemd时,会创建几个PID,如下所示这个屏幕截图ps | grep

是否有可能只创建初始 PID?

因为新的 PID 一直在创建。

答案1

UDP 和 UDP-LISTEN 地址创建需要显式关闭的伪流连接,因为 UDP 不会传输关闭状态,或者使用选项让它们超时。-T <seconds>

当你只有一个陷阱发送者时,你可以使用命令行而不需要 fork:

socat -d -d UDP-LISTEN:162 UDP:10.127.130.70:162

当您有多个发件人时,我建议使用数据报模式:

socat -d -d UDP-RECV:162 UDP-SENDTO:10.127.130.70:162

请注意,UDP-RECV 是单向的,可以很好地与 SNMP 陷阱配合使用,但不能与 SNMP 命令配合使用。

相关内容