【发布时间】:2015-07-31 09:15:20
【问题描述】:
我有一个通过 cron 作业运行的 php 脚本。
我在脚本中有一个 exec 命令,如下所示:
exec("ps -u bob -o user:20,%cpu,cmd | awk 'NR>1' | grep vlc | tr -s ' ' | cut -d ' ' -f 2",$cpu,$return)
如果进程存在,这会从特定用户运行的进程中获取 cpu。当通过命令行运行时,我会说 21 或什么都没有,这取决于进程是否正在运行。但是,当运行 vai PHP 脚本时,我得到以下信息:
[0] => bob 0.0 /bin/sh -c php /home/bob/restart.php bob
[1] => bob 0.0 php /home/bob/restartStream.php bob
[2] => bob 0.0 sh -c ps -u bob -o user:20,%cpu,cmd | awk NR
它似乎返回了所有最近执行的命令,而不是执行命令的结果。
我看到一些帖子显示了2>&1 的使用,我相信它们会重定向标准输入和标准输出或类似的东西。但是我已经在我的命令中这样尝试过:
ps -u bob -o user:20,%cpu,cmd | awk 'NR>1' | grep vlc | tr -s ' ' | cut -d ' ' -f 2 2>&1
但这似乎并没有什么不同。任何人都可以给我任何关于为什么会发生这种情况以及可以做些什么来解决这个问题的指示。
【问题讨论】: