нечетное PHP поведение при выполнении команды оболочки с помощью cron - PullRequest
0 голосов
/ 16 апреля 2020

У меня очень странная проблема. Я использую следующий код для сохранения значения ЦП clamd, используя top

<?
$clamd_load=rtrim(shell_exec("/usr/bin/top -n1 -b -c | grep \"bin/[c]lamd\" | grep -E -io \" [0-9]{1,3}[.][0-9]{1}[ ]{2}[0-9]{1,3}[.][0-9]{1} \"  | awk '{print $1}'"));
if ($clamd_load!=""){
shell_exec("echo \"-$clamd_load-\" >> /tmp/clamd_cpu");
}
?>

Если я выполняю этот скрипт php из консоли, он запускается правильно, возвращая правильное значение $ clamd_load

Если я выполню это Сценарий php с использованием root cron, сценарий просто сохраняет

--
--
--

, возвращая пустой $ clamd_load. Почему скрипт возвращает правильное значение $ clamd_load, если я запускаю его из консоли, и почему $ clamd_load ничего не возвращает, если я запускаю тот же скрипт, используя root cron.

Я часто запускаю php сценарии как cron (с командами оболочки в сценарии), и я никогда раньше не видел этой проблемы. Если я использую ps вместо верхней команды, это работает. Почему top не должен выполняться в моем php сценарии с использованием root cron?

1 Ответ

0 голосов
/ 16 апреля 2020

Причина объясняется здесь https://unix.stackexchange.com/questions/95877/output-of-top-gets-truncated-to-80-columns-when-run-by-cron

Решено с использованием COLUMNS = 200 перед вершиной

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...