выполнение sh сценария от крона

Существует также библиотека Curry для чтения/записи файлов в формате CSV: CSV.

12
05.02.2011, 02:05
3 ответа

По словам человека:

Демон крона запускает подоболочку с Вашего Корневого каталога. При планировании команды для выполнения, когда Вы не будете зарегистрированы, и Вы хотите, чтобы команды в Вашем .profile файле работали, команда должна явно считать Ваш .profile файл.

Демон крона предоставляет стандартную среду для каждой оболочки, определяя ДОМОЙ, LOGNAME, SHELL (=/usr/bin/sh),
и ПУТЬ (=/usr/bin).

Таким образом, демон крона не знает, где php, и необходимо указать весь путь php вручную, например (я не знаю реальный путь PHP):

#!/bin/sh
/usr/local/bin/php /home/v/file.php
sh /root/x/some.sh

Иначе должен получить/etc/profile (или Ваш .profile/.bashrc), например

* * * * * . /home/v/.bashrc ; sh /home/v/test.sh

Это полезно, если Ваши .bashrc устанавливают переменные среды, в которых Вы нуждаетесь (т.е. Путь)

Править

Интересное чтение является "Новичком: Введение к крону", не недооценивайте статью из заголовка (Это - чтение для всех), на самом деле это правильно написано завершенный, и ответьте отлично на свой вопрос:

...
ПУТЬ содержит каталоги, которые будут в пути поиска для крона, например, если у Вас есть программа 'нечто' в каталоге,/usr/cog/bin, могло бы стоить добавить/usr/cog/bin к пути, поскольку это остановит Вас имеющий необходимость использовать полный путь для 'нечто' каждый раз, когда Вы хотите назвать его.
...

15
27.01.2020, 19:55
  • 1
    , Плохой $PATH является наиболее распространенной причиной сценариев, которые работают вручную, но не от крона. –  Patrick 02.02.2011, 21:10
  • 2
    @Patrick, Конечно, это - проблема, если крон не знает, где php, иначе Elzo crontab, работал бы без каких-либо проблем, это ДОЛЖНА быть проблема ПУТИ. –  tmow 03.02.2011, 10:01
  • 3
    Большое спасибо за Ваш ответ. Это работало на меня с очень легко!!!.. Большое спасибо @tmow. –  Vignesh Prajapati 10.01.2016, 20:07

Существует четыре частых причины для работы команд при вводе в терминале, но не от крона, в порядке заурядности:

  1. Крон обеспечивает ограниченную среду, например, минимальное $PATH, и другие ожидаемые пропавшие без вести переменных.
  2. Крон вызывает/bin/sh по умолчанию, тогда как можно использовать некоторую другую оболочку в интерактивном режиме.
  3. Крон рассматривает символ % особенно (он превращен в новую строку в команде).
  4. Крон не обеспечивает терминальную или графическую среду.

Если Ваше задание производит вывод, включая сообщения об ошибках, крон посылает Вам электронное письмо с целым выводом. Удостоверьтесь, что Вы читаете почту, которую Вы получаете локально или передаете его адресу, который Вы читаете. Для пересылки почты от локальной учетной записи до некоторого другого адреса вставьте другой адрес ~/.forward. Если задание крона работает как пользователь системы (root, webmaster, …), удостоверьтесь, что почта пользователя перенаправляется Вам (и любой другой администратор); с большинством почтовых установок, помещенных строк как root: elzo в /etc/aliases.

5
27.01.2020, 19:55

Демон крона обычно выполняет Вашу команду в оболочке, где переменная окружения PATH ограничивается некоторым системным значением по умолчанию, например,/usr/bin:/bin.

Вероятно, Ваш php команда не доступна в/usr/bin или / мусорном ведре и таким образом сбоях сценария при выполнении через крон и выполнения, успешные если не.

Крон обычно сообщает об ошибках или сообщениях задания через почту пользователю root (т.е. когда команда возвращает статус выхода! = 0 или производит вывод для stdout/stderr) после того, как задание будет закончено.

В зависимости от Вашей системы необходимо установить доставку местной почты для получения этих сообщений.

2
27.01.2020, 19:55

Теги

Похожие вопросы