运行“最后”Linux命令

时间:2014-05-13 05:21:58

标签: php linux exec shell-exec

我正在尝试用PHP执行linux命令,这是我的示例代码:

$command = "last -F";
$o = shell_exec($command);
print_r($o);

大多数Linux命令都给我一个输出,但对于Last -F命令,我没有输出。为什么会这样?

2 个答案:

答案 0 :(得分:0)

试试This Explaination。您的问题可能是last -F的最后一行是新行。 shell_exec()只返回命令的最后一行,因此,如果该行为空,则什么也得不到,nada。

作为替代方案,尝试exec(),这将允许您捕获返回值(执行的成功或失败)以及命令的整个输出。查看here

答案 1 :(得分:0)

您正在以web用户(nobodywww-data)执行该命令,该用户是有限的特权用户。您必须以root身份执行该命令。不幸的是,给网络用户提供sudo权限或完全权限是一个坏主意。因此,我建议创建一个执行last -F的cron或后台脚本,并将输出写入文件。您可以从PHP脚本中读取该文件。

您可以让脚本在这样的后台运行。

   #!/bin/bash

    while [ true ]; do
         last -F > /tmp/myfile
    done

将代码保存为mycron.sh

chmod +x mycron.sh
mycron.sh &

从PHP程序中读取文件/tmp/myfile。它将给出该命令的确切输出。