heiher / natmap

TCP/UDP port mapping for full cone NAT
MIT License
1.38k stars 103 forks source link

是不是调用脚本一定时间内没响应就终止本进程? #23

Closed wits-fe closed 1 year ago

wits-fe commented 1 year ago

用的脚本 https://github.com/wits-fe/bittorrent-NAT-hole-punching/blob/main/update-ut.sh 这个脚本达到某种条件后退出,否则驻留一定时间

调用

nohup ./run.sh /root/app/natmap -i pppoe-wan2 -s stunserver.stunprotocol.org -h qq.com -b 3434 -e /root/app/qb/update-qb.sh >>out1 2>>out2 &

其中 ./run.sh(失败后输出exitcode,接着再次运行)

#!/bin/sh

while true; do
   "$@"
   echo "$?" > exitcode
   sleep 10
done

输出的 out1 内容

External IP - 111.94.30.217:55411, bind port 3434, tcp

out2

nohup: ignoring input
Aborted
[E] hev_sock_client_stun src/hev-sock.c:281
[E] task_entry src/hev-stun.c:289
[E] hev_sock_client_stun src/hev-sock.c:281
[E] task_entry src/hev-stun.c:289
[E] hev_sock_client_tcp src/hev-sock.c:167
[E] tnsk_run src/hev-tnsk.c:93
[E] hev_sock_client_tcp src/hev-sock.c:167
[E] tnsk_run src/hev-tnsk.c:93
[E] hev_sock_client_tcp src/hev-sock.c:167
...

可看到第一次运行时,调用的脚本在执行,一段时间后(几分钟?),natmap 退出,输出 Aborted exitcode 134 ./run.sh 循环再次运行 natmap ,这次运行后没调用脚本(输出的out1 内容没更新,所以脚本没执行) 然后追加到 out2 的信息如上面 [E] hev_sock_client_stun src/hev-sock.c:281..

natmap 用不用-d 结果都会退出

问题 natmap 是以什么条件终止的?

heiher commented 1 year ago

暂不清楚是什么原因导致了Aborted,我这还没有遇到过,确定该错误是来自natmap吗?或者打开coredump功能,看看能否捕获到core文件,再发出来分析一下。

这段错误不代表有问题,是因旧连接断开后系统没有立即释放端口而导致的connect失败,自动重试一会后即会正常连接了。

[E] hev_sock_client_stun src/hev-sock.c:281
[E] task_entry src/hev-stun.c:289
[E] hev_sock_client_stun src/hev-sock.c:281
[E] task_entry src/hev-stun.c:289
[E] hev_sock_client_tcp src/hev-sock.c:167
[E] tnsk_run src/hev-tnsk.c:93
[E] hev_sock_client_tcp src/hev-sock.c:167
[E] tnsk_run src/hev-tnsk.c:93
[E] hev_sock_client_tcp src/hev-sock.c:167
wits-fe commented 1 year ago

core.natmap.14900.zip

heiher commented 1 year ago

core.natmap.14900.zip

程序是哪个版本?也传一下二进制

wits-fe commented 1 year ago

https://github.com/heiher/natmap/releases/download/20221225/natmap-linux-mips32 这个

heiher commented 1 year ago

请测测这个版本 natmap-linux-mips32.gz 也可以fetch master分支最新代码编译。

wits-fe commented 1 year ago

请测测这个版本 natmap-linux-mips32.gz 也可以fetch master分支最新代码编译。

这个没再退出了。

测试设置绑定的端口3401,调用了脚本,后续好像不到1分钟?换了端口3402,再次调用脚本 第1次调用有输出,但第2次调用没看到输出信息。但是脚本确实是执行了,在qb客户端看到2次登录 猜测可能后续stdout不再指向这个 out1

edit: 换绑定端口大概是因为我前面运行了一次,用的同样的端口...

犯蠢了,看了命令记录,我的脚本有3个正在运行!故脚本逻辑判断出问题。。上面当我没说过

heiher commented 1 year ago

好的,感谢反馈。