ADDENDUM:以下问题中的问题是由 SECOND 命令引起的。当我注释掉第二个语句时,第一个语句按预期运行并产生预期结果。 :■
我需要从PHP同时运行两个终端命令,没有解决我的问题(如果你愿意,你可以看到here和here)。第一个命令应该运行Tshark 5秒并捕获网络流量(数据包)。第二个命令应该生成一些网络数据包并发送它们。整个想法是第二个命令产生的网络数据包应由Tshark捕获,由第一个命令启动。
换句话说,我需要在后台启动Tshark,而不是等待它完成,我需要运行第二个命令。
最后,如果我们使用 &
结束终端命令,我会在某处读到,命令在BACKGROUND 中运行,我们可以继续运行其他命令在前台。 我认为这是我问题的解决方案!
然后我编写了以下脚本。
问题:的
当我在浏览器中执行此脚本时,网页会保持加载状态,并且加载永远不会完成。此外,显然,tshark继续在后台运行捕获数据包,而不是在5秒后停止。我之所以这么说是因为数据包继续添加到捕获文件中(capture.pcap
和capture.txt
- 存储数据包的文件,请参阅脚本中的命令)除非我手动结束浏览器中WEBPAGE的加载。
此外,当我手动停止加载网页并打开wireshark中的capture.pcap
文件时,我看到应该由第二个命令发送的数据包已经发送了数百次。
问题:
这是否意味着两个命令一次又一次地运行,就像在无限循环中一样?
脚本中没有循环。那么为什么这种无限循环行为呢?我该如何解决这个问题?
SCRIPT:
shell_exec("tshark -a duration:5 -w /var/www/html/Test/capture.pcap -V > capture.txt &");
shell_exec("./mtu -d0 -a43020008 -g43010008 -i987654321 -s'Mary' 2>&1");