Проблема № 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)
.