Команда оболочки для удаления файлов, не работающих в crontab - PullRequest
0 голосов
/ 15 мая 2018

У меня есть команда для периодического удаления старых файлов, используя crontab.

Команда:

0 * * * * sudo find /path/to/data/ -type f -mmin +600 -name '*.gz' -execdir rm -- '{}' +;

Это помогает мне удалить все .gz файлы старше 600 минут (10 часов) из указанной папки.Он отлично работает в командной строке и в crontab.

Теперь я изменил указанную выше команду, чтобы удалить другую группу файлов.Однако он работает в командной строке, но не в crontab.

0 * * * * sudo find /path/to/data/ -type f -mmin +600 -name '*.gz%%' -execdir rm -- '{}' +;

Мои файлы имеют расширение *.gz%%.К именам файлов добавляется %%, и при необходимости их можно изменить на другой символ.

Команда работает отлично, если она запускается из командной строки , и все же при хранении вcrontab не выполняется вообще.

Похоже, crontab не может выполнить команду.Любые указатели для отладки или в чем проблема в команде?

1 Ответ

0 голосов
/ 15 мая 2018

со страницы руководства crontab(5):

   The  "sixth"  field  (the rest of the line) specifies the command to be
   run.  The entire command portion of the line, up to a newline or a  "%"
   character, will be executed by /bin/sh or by the shell specified in the
   SHELL variable of the cronfile.  A "%" character in the command, unless
   escaped  with a backslash (\), will be changed into newline characters,
   and all data after the first % will be sent to the command as  standard
   input.
...