Можно использовать grep
для этого
grep -vh '^[[:space:]]*#' filename
С тех пор, как я предполагаю, Вы разделяете комментарии из некоторого файла, Вы могли бы также рассмотреть удаляющие пустые строки, который разворачивает вышеупомянутое до:
grep -vh '^[[:space:]]*\(#\|$\)' filename
Наиболее распространенная причина, почему сценарий работает из командной строки, но не из crontab, состоит в том, что сценарий зависит от переменной среды. Crontabs только имеют несколько наборов переменных среды: обычно только HOME
, USER
, SHELL
(набор к /bin/sh
) и PATH
(набор к системному значению по умолчанию). При необходимости в больше необходимо определить их в crontab файле или источнике ~/.profile
от команды.
Возможно, у Вас есть две версии установленного PHP, тот, который на первом месте в Вашей командной строке $PATH
и тот, который на первом месте в Вашем системном значении по умолчанию $PATH
, и системное значение по умолчанию PHP, измененный недавно. Но невозможно высказать больше, чем образованное предположение, так как Вы не говорите, какую ошибку Вы получаете.
Удостоверьтесь, что Вы, crontab выполняет Ваши сценарии как того же пользователя как тот, который Вы зарегистрированы как.
Некоторые огибающие права var или файла, вероятно, изменились для одного из пользователей.
Еще одна вещь не принять в скрипте, запущенном кроном: значение $HOME. Используйте $HOME явно, не предполагайте, что он имеет некоторое конкретное значение. Команды вызова и ссылочные файлы полными путями.
$HOME
набор правильно. В моей системе задание крона имеет $HOME
, $LOGNAME
, $PATH
, $LANG
, $SHELL
, и $PWD
. Однако, использование $HOME
явно хорошая идея.
– Keith Thompson
08.11.2011, 23:07