从cron执行的php脚本

从cron执行的php脚本,php,linux,cron,Php,Linux,Cron,我有一台Centos 7服务器。我有一个php脚本(conn.php),它执行一个shell命令来计算SMTP连接的数量,并将它们保存在/usr/local/conn.txt中 <?php $conn=rtrim(shell_exec("ss -tn | egrep \":25 |:26 |:587 |:465 \" | egrep \"^ESTAB\" | awk '{print $4}' | egrep -c \":2

我有一台Centos 7服务器。我有一个php脚本(conn.php),它执行一个shell命令来计算SMTP连接的数量,并将它们保存在/usr/local/conn.txt中

    <?php
$conn=rtrim(shell_exec("ss -tn | egrep \":25 |:26 |:587 |:465 \" | egrep \"^ESTAB\" | awk '{print $4}' | egrep -c \":25|:26|:587|:465\" >> /usr/local/conn.txt " ));
?>
它工作正常,并将正确的SMTP连接数保存在/usr/local/conn.txt中。e、 g

15
24
56
34
12
但是如果我设置这样的根cron,每2分钟执行一次脚本

*/2 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/conn.php
脚本只在/usr/local/conn.txt中保存一个长系列的0(每次cron执行时都是零)


如何避免这种情况?如果从根cron执行,为什么脚本不会返回正确的值?

为您使用的每个命令放置完全限定的路径,
egrep,ss,awk
PHP脚本是否还有更多内容,是否应该在命令中插入任何动态值?如果没有,为什么首先要绕道PHP脚本,为什么不直接通过cron执行shell命令?因为脚本执行其他操作,我在这里只提出问题来解释问题。为您使用的每个命令放置完全限定路径,
egrep,ss,awk
您的PHP脚本还有更多内容吗,它应该在命令中插入任何动态值吗?如果没有,为什么首先要绕道PHP脚本,为什么不直接通过cron执行shell命令呢?因为脚本执行其他操作,所以我在这里只提出这个问题来解释这个问题。
*/2 * * * * /usr/local/cpanel/3rdparty/bin/php-cgi /usr/local/conn.php
0
0
0
0
0
0