没有输出当我在cgi - Ubuntu中运行并回显lsof时显示

时间:2013-11-04 10:53:05

标签: ubuntu cgi port pid lsof

我最近开始使用cgi。由于我必须显示有关某些端口的端口使用信息,因此我编写了以下代码:

#!/bin/bash

echo "Content-type: text/html"
echo ""
echo "<html><head><title>PortInfo</title></head><body><center>"
echo "<h1>Port 80 Usage Info</h1>"

#method1
echo "<pre> $(lsof -i :80) </pre>"

#method2
echo "$(lsof -i :80 > /home/shine/Desktop/tmp.txt)"
echo "<pre> $(cat /home/shine/Desktop/tmp.txt) </pre>" 

echo "<center>Information generated on $(date)</center>"
echo "</center></body></html>"

方法1: 这里的问题是echo "<pre> $(lsof -i :80) </pre>"没有给出任何输出。

方法2: 在这种方法中,echo "$(lsof -i :80 > /home/shine/Desktop/tmp.txt)"永远不会在桌面上创建一个名为tmp.txt的文件,因为它应该这样做。

重要说明: 上述两种方法在终端中执行后都会完美运行。

1 个答案:

答案 0 :(得分:1)

所以我找到了我正在寻找的答案,更像是另类。

有人提到某处,有关cron脚本的内容,所以我做了以下内容。

第一步

sudo crontab -e

输入2纳米编辑器

添加以下行:

* * * * * lsof -i :80 > /home/shine/port80.txt
* * * * * lsof -i :3000 > /home/shine/port3000.txt

注意:上面的代码行将生成两个包含端口80&amp;的文本文件。 3000信息 每分钟在当前用户的主目录中。

ctrl+oenterctrl+x保存并退出。

第二步

在apache的www目录中 使用以下代码创建一个php文件。

<?php

$output80 = shell_exec("cat '/home/shine/reports/port80.txt'");
echo "<pre>$output80</pre>";
$output3000 = shell_exec('cat "/home/shine/reports/port3000.txt"');
echo "<pre>$output3000</pre>";

?>

这是我现在想到的唯一方法,可以让网页上的lsof工作。