小编use*_*937的帖子

记录使用SOCAT在端口上接收的消息

我有一个带有开放端口的服务器,每秒接收50到1000条消息.通过消息我的意思是发送一行文本.

基本上我们希望将这些消息记录在每小时(或x分钟)处理的文件中.

我创建了一个bash脚本(见下文),它在后台运行,除非我杀死socat进程(因此我可以将文件进行处理,它可以启动一个新文件),我们会收到一条消息,我确信我们在分裂的第二天就失去了消息,即socat失败了.

DELAY="3600"
while true
do  
    NEXT_STOP=`date +%s --date "$DELAY second"`
    (
        while [ "$(date +%s)" -lt "$NEXT_STOP" ]
        do
            killall socat
            socat -u TCP-LISTEN:6116,reuseaddr,keepalive,rcvbuf=131071,reuseaddr OPEN:/var/ais/out_v4.txt,creat,append
        done
    ) & sleep $DELAY ; killall socat

    mv /var/ais/out_v4.txt "/var/ais/_socat_received/"$(date +"%Y-%m-%d-%T")"__out_v4.txt"
done
Run Code Online (Sandbox Code Playgroud)

有办法:

  1. 让socat旋转其输出文件而不会终止进程
  2. 或者我们可以在SOCAT写入文件时清除文件的内容.例如,将前10000行剪切成另一个文件,因此输出文件仍然是可管理的大小?

提前谢谢了

linux bash port tcp socat

12
推荐指数
1
解决办法
2万
查看次数

标签 统计

bash ×1

linux ×1

port ×1

socat ×1

tcp ×1