У меня есть PHP-скрипт, который я хочу запускать каждые 10 минут, просматривая записи базы данных и создавая / редактируя фильмы через MEncoder. Для этого я настроил задание cron, но оно работает не очень хорошо.
У меня есть сценарий PHP, назовите его document.php. У меня также есть сценарий bash (document.sh) для вызова этого сценария PHP;
#!/bin/bash
php document.php
А теперь самое странное: когда я вручную запускаю сценарий bash, все работает отлично - фильмы создаются или редактируются так, как я хочу, - но когда я позволяю заданию cron запускать сценарий bash каждые 10 минут, фильмы повреждаются. Хотя в них есть какие-то рамки. Я понятия не имею, как это может случиться. Я проверил разрешения и пути к файлам, все в порядке. Убивает ли работа cron мой процесс? Есть ли у него ограничение по времени (на запуск MEncoder через файлы требуется примерно 1-2 минуты)?
Надеюсь, кто-то сможет дать ответ - меня это действительно беспокоит, и срок уже близок.
Я использую Ubuntu Server с последними обновлениями и последней версией MEncoder из репозитория.
С уважением, Бьёрн
Запуск из cron не включает файлы конфигурации вашей оболочки (~ / .bashrc, ~ / .profile или / etc / profile). Возможно ли, что там определены переменные среды, которые влияют на вашу работу? Попробуйте получить файлы своего профиля вручную в начале сценария. (. /path/to/profile
)
Это очень распространенная проблема с cronjobs - вы просто не можете предполагать переменные среды, пути и т. Д. Мне нравится иметь задание cron, которое делает "set > /tmp/set"
так что вы можете точно видеть, что вы собираетесь получить с точки зрения cronjob. Таким образом вы можете сравнить предположения, сделанные вашим скриптом, и то, какие корректировки необходимо внести.
Мое простое решение - вызвать файл php с помощью LYNX. Предполагая, что у вас запущен http-сервер.
Ограничений по времени быть не должно - по крайней мере, по умолчанию, не уверен в этом дистрибутиве. Вы получаете электронное письмо cron? Если нет, перенаправьте stdin / stdout в файл и посмотрите, что говорит процесс.
your-cmd > filename.txt 2>&1
Как заявляли другие, наиболее вероятной проблемой номер один является отсутствие некоторых переменных среды. Если это не так, я могу придумать еще одну возможность: вы уверены, что работа займет всего 1-2 минуты? если требуется> 10 (ваш интервал для его возрождения), вы можете выполнить несколько запусков, пытающихся изменить одни и те же файлы, что может вызвать некоторые из упомянутых вами повреждений.
Отладка cron - это всегда ... весело. во-первых, проверьте электронную почту root в этой системе; если задание cron помещает что-либо в stdout, оно должно быть там. Если ничего полезного там не обнаружилось, можно делать что-то появляется там, помещая некоторые отладочные данные в ваш скрипт.