我试图输出一个系统netstat -an -p TCP $interval > $log来获得$ seconds的睡眠时间,然后退出/ kill netstat命令,但是无法正常工作。
如果我使用start netstat... ,我的sleep和kill命令工作,但它不写入日志。
如果我只使用netstat... ,那么它会写入日志,但不会移动到sleep和kill命令。
任何想法如何解决这个??
FIN_WAIT1是什么意思
在solaris 11.0中检测文件描述符是否是套接字,并提取ip地址
windows上的Netstat中的“”是什么意思?
inetinfo.exe总是出现在任务pipe理器
如何使用ADB shell查找进程正在使用的端口?
$netstat_cmd = "netstat -an -p TCP $interval >$netstatlog; $stop_netstat_cmd = "c:utilitIEspskill NETSTAT.exe"; system($netstat_cmd); sleep $seconds; system "$stop_netstat_cmd";
谢谢!
如何使用批处理脚本在windows中优先通过端口80终止CLOSE_WAIT状态进程
如何在linux,C代码中使用它们列出活动端口和进程
为什么总是5个连接没有附加程序?
ES不听外部请求
获取使用的端口和状态
为什么不使用IPC::Run ? 它有一个kill_kill()方法,可以在Unix和Win32上移植(如果你在windows上运行,后者很重要,因为你的“开始”似乎可能表示)。
至于你自己的方法, start xxx重定向不起作用,所以最简单的解决方法是:
创建一个批处理文件来运行netstat并重定向到一个文件
用start启动批处理文件
你的麻烦是系统()运行它的命令,并等待它的返回,所以你永远不会调用sleep()。 您需要从另一个进程运行netstat,或者在后台运行。 你可以使用fork()来实现这个功能,从你的主进程产生另一个进程,并运行netstat:
my $interval = 5; my $netstatlog = "foo.tmp"; my $seconds = 10; my $netstat_cmd = "netstat -an -p TCP $interval >$netstatlog"; my $stop_netstat_cmd = "pskill NETSTAT.exe"; if (my $pID = fork()) { # make new process print "launched netstat $pIDn"; } else { # this is the "new" process system($netstat_cmd); exit(); } sleep $seconds; system "$stop_netstat_cmd";
(我没有pskill,所以你必须让这部分工作自己…)
Forks::Super使这种任务容易为你。
use Forks::Super; fork { cmd => $netstat_cmd,timeout => $seconds }; wait;
总结以上是内存溢出为你收集整理的Perl系统(命令)然后kill命令全部内容,希望文章能够帮你解决Perl系统(命令)然后kill命令所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)