Skip to content

На серверах с ISPManager 4 в cron-заданиях не работает find(при ручном выполнении возникает ошибка code 3 Not exists)

На серверах с ISPManager 4 в cron-заданиях не работает find(при ручном выполнении возникает ошибка code 3 Not exists)

Опытным путём установил, что ISPManager не любит команды, в параметрах которых используются спец-символы, вроде +.

При использовании их в командах планировщика cron рекомендуется экранировать подобные символы бэк-слешем.

Вероятно, ISPManager проверяет команды на наличие спец-символов, при этом проверка реагирует на них даже в тех случаях, когда данные символы заэкранированы.

Исходя из этого, можно предположить, что задание со спецсимволами в команде не корректно выполняются только панелькой при нажатии на "Выполнить". Сам cron должен их выполнять успешно.

Что-бы обойти данное ограничение панельки, нужно изменить команду таким образом, что-бы в параметрах не присутствовали спец-символы.

К примеру, что-бы избавиться от -mtime +1 можно пойти на хитрость и вместо

find /var/www/tmp/ -type f -mtime +1 -delete 

изпользовать

cd /var/www/tmp/;touch -d '1 day ago' cutoff;/usr/bin/find . -type f ! -newer cutoff -delete

В этой команде мы создаём файл cutoff в каталоге /var/www/tmp/, с датой создания/изменения равной значению один день назад от текущего момента. После чего запускаем find ищущий все файлы в этом каталоге, не равные болеем новым файлам, чем наш файл cutoff

Также для этой же цели можно использовать

/usr/bin/find /var/www/tmp/ -type f ! -newermt 1d -delete