我正在尝试在接口wlan0上启动一个tshark进程捕获5分钟。正如在其他线程中读到的那样,我试图将输出定向到这样的文件:
$log = "sniff-".date("Y-m-d-H-i-s").".txt";
system("sudo tshark -i wlan0 -a duration:300 > /var/www/log".$log);
我期待网络服务器启动tshark流程并继续前进。在apache的错误日志中,我可以看到tshark的正常输出:
Running as user "root" and group "root". This could be dangerous
Capturing on wlan0
6 packets captured
我需要更改tshark输出到此日志文件而不中断php脚本?和&是的,如果是的话,我该把它放在哪里?
解决方案:
system("sudo tshark -i wlan0 -a duration:300 > /var/www/log".$log." &");
答案 0 :(得分:1)
把&在bash cmd的末尾,它应该将它与正在运行的会话断开连接,但是您可以尝试使用PHP线程或PHP fork作为并行进程运行该进程,前提是您的服务器已安装相关设置和模块以启用此功能。
system("sudo tshark -i wlan0 -a duration:300 &> /var/www/log".$log.' &');
此外,通过添加&>作为重定向模式,它会将STDOUT和STDERR流重定向到日志文件。您看到的消息可能来自STDERR,但可能不会出现在您的日志文件中。
答案 1 :(得分:0)
sudo nohup tshark -i wlan0 ...