Назад | Перейти на главную страницу

Проблемы с использованием «at» в Apache

Я пытаюсь использовать сценарий PHP для создания at заданий, но когда приходит время выполнять задания, кажется, что ничего не происходит. Я пытался вывести любые ошибки в файлы журналов, но безуспешно. Кажется очевидным, что это проблема с разрешениями, потому что, когда я устанавливаю apache для запуска от имени моего личного пользователя, все работает нормально. Однако, когда я запускаю wget непосредственно из PHP, все работает нормально, поэтому кажется, что apache имеет правильные разрешения на его использование. Проблема возникает при использовании at в связке с apache. Поэтому мне нужно найти способ заставить эту работу работать с apache, работающим как собственный пользователь.

Вот команда, которую я использую:

echo "wget -qO- http://example.com/" | at now + 1 minute 2>&1

Любые идеи?

РЕДАКТИРОВАТЬ: Apache может создавать задания at, просто кажется, что при их выполнении ничего не происходит.

Проблема аналогична проблеме cron: ваша работа выполняется в минимальной среде (подумайте, что PATH = / bin: / usr / bin и 2 или 3 вещи) и ничего не связано со стандартным вводом и выводом.

Сначала убедитесь, что ваша учетная запись Apache является рабочей оболочкой (а не /bin/false), потому что "at" будет использовать эту оболочку для выполнения вашего задания.

Затем попробуйте этот более конкретный фрагмент:

echo "/usr/bin/wget -qO- http://example.com/ >/tmp/example.com 2>/tmp/example.com.error" | at now + 1 minute

Вы проверяли, находится ли пользователь apache в файле at.allow? На странице руководства ...

       The  /etc/at.allow and /etc/at.deny files determine which user can sub-
   mit commands for later execution via at(1) or batch(1).

   The format of the files is a list  of  usernames,  one  on  each  line.
   Whitespace is not permitted.

   The superuser may always use at.

   If  the  file  /etc/at.allow exists, only usernames mentioned in it are
   allowed to use at.

   If /etc/at.allow does not exist, /etc/at.deny is checked.