Есть ли предел символов, который может быть в команде crontab?
У меня есть crontab с командой из 178 символов, и кажется, что он усекается до 164 при выполнении. Я могу узнать это число по электронной почте, которую я получаю, и по цветам vi, меняющимся с этого момента.
Итак, это «официальное» ограничение? Я не могу найти документацию по этому поводу.
Ответы:
Вау, я обнаружил, в чем заключается моя проблема, и это никак не связано с длиной строки.
Оказывается, в моей команде был% (знак процента), что имеет особое значение в crontab. Он используется для ввода текста в STDIN (см. Почему мой crontab не работает и как я могу его устранить? ).
Поэтому я должен был избежать этого. Моя команда, которая была:
становится
источник
%
Вызвало пару часов испуг!На практике на всех моих машинах с Ubuntu в каждой строке выполняется усечение по 999 символов, хотя я еще не нашел соответствующей пояснительной документации.
Я тестировал в Ubuntu 10.04, 12.04 и 14.04, и счетчик 999 запускается с первого непробельного символа после расписания (в моем примере это расписание
* * * * *
, равное 1 раз в минуту).Заметим:
Сначала мы посчитаем символы команды, которую мы добавим в наш crontab - без расписания :
Добавьте эту команду в наш crontab, чтобы запускать каждую минуту: (WARN перезаписывает все существующие записи crontab для соответствующего пользователя)
Подождите одну минуту, проверьте, что создан
/tmp/test.log
файл, содержащий все ваши "а":Начните заново, удалите crontab и файл журнала:
Добавьте ту же команду, что и раньше, только на 1 символ длиннее (в моем случае
B
):/tmp/test.lo
"a". Это потому, что 1000-й символ был усечен.Для подтверждения удалите добавленное
B
и вместо этого добавьте1
к имени файла, например, так:/tmp/test1.lo
создается с вашими "а"./bin/echo
на/usr/bin/echo
и найдите, что вам придется удалить еще 4 символа из вашей команды.источник
cron
на моем Ubuntu 14.04 молча обрезает команду до 999 символов. Это так безумие, мне потребовалось время, чтобы переварить это. И это, кажется, единственное место в Интернете, чтобы документировать это, с 1 upvote.... && stop-power-plant; start-power-plant
и cron просто молча отрубает; start-power-plant
/bin/sh: 1: Syntax error: Unterminated quoted string
, но ничто не гарантирует этого.