Проблема с запуском Ruby с Cron - PullRequest
0 голосов
/ 16 апреля 2010

Мой рубиновый файл выглядит так.

`mkdir #{HOST} -p`

Работает нормально: ruby mycode.rb

Но в работе cron

0 * * * * ruby ​​~ / backup.rb >> backup.log

Это будет папка -p. Зачем?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2010

Проблема № 1, с которой кто-либо сталкивается с заданиями cron, заключается в том, что обычно, из соображений безопасности, задания cron запускаются с минимальным значением $PATH. Таким образом, может быть так, что ваше задание cron запускается с другим путем, чем при запуске сценария из оболочки, что означает, что возможно , что в задании cron другое mkdir вызывается comman, который по-разному интерпретирует свои аргументы.

Обычно , первый аргумент имени файла останавливает обработку параметров, и все, что последует после этого, будет обрабатываться как имя файла. Таким образом, поскольку #{HOST} является именем файла, все, что после этого будет также , будет рассматриваться как имя файла, что означает, что вызов будет интерпретирован как «создать две директории, одну с именем #{HOST}, а другую с -p "Если вы посмотрите, например, на спецификацию mkdir, просто нельзя указывать опцию после имени файла.

Другая возможность состоит в том, что по какой-то причине #{HOST} будет пустым при работе под cron. Затем весь вызов расширяется до mkdir -p, что, опять же, в зависимости от вашей реализации mkdir может интерпретироваться как "создать один каталог с именем -p".

Мне не совсем понятно, почему вы передаете опции и операнды в неправильном порядке вместо mkdir -p #{HOST}. Мне также не понятно, почему вы используете оболочку на всех вместо просто FileUtils.mkdir_p(HOST).

1 голос
/ 21 апреля 2010

Другая проблема, которую я видел, это #! Сценарий не работает, когда используется / usr / bin / env. Например:

#!/usr/bin/env ruby

не находит ruby ​​при работе под cron. Вы должны использовать

#!/usr/local/bin/ruby

или эквивалент на вашей платформе.

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