Использование сценария находит, хорошо работает, когда я выполняю его, но не работает правильно от крона

Кто-либо может сказать мне что не так в этом сценарии?

Это не работает в cron, но хорошо работает, когда я обычно выполняю его.

Предупреждение: эта команда опасна и может удалить много файлов

#!/bin/bash

/bin/find  .  -maxdepth 1 -type d  -ctime +2 -exec /bin/rm -rf {} \;
1
задан 22 February 2019 в 23:47

2 ответа

Поэтому давайте посмотрим то, что Вы делаете здесь:

/bin/find  .  -maxdepth 1 -type d  -ctime +2 -exec /bin/rm -rf {} \;

Найдите все папки в текущем каталоге (.) созданный больше чем 2 дня назад и выполняются rm -rf на нем.

Текущий рабочий каталог для cronjob является пользовательским корневым каталогом, для root/sudo cronjobs это /root.

Если Вы были действительно удачливы, Вы использовали sudo crontab, и это не причинило вреда, как /root каталог обычно не используется в Ubuntu.

В противном случае Вы в основном удалили все каталоги, более старые, чем 2 дня в Вашем доме. Это должно иметь более или менее что-либо значение. Desktop, Pictures, Documents, .config ...


Что необходимо сделать вместо этого:

Используйте полные пути:

/bin/find /path/to/my/folder -maxdepth 1 -type d  -ctime +2 -exec /bin/rm -rf {} \;

Всегда

  • будьте очень осторожны с rm -rf, и не используйте его, если Вы не на 100% уверены в этом.
  • имейте готовое резервное копирование.
8
ответ дан 3 December 2019 в 06:19

Этот сценарий зависит от какой текущий рабочий каталог (.) который, вероятно, отличается, когда Вы выполняете его вручную по сравнению с тем, когда крон выполняет его.

Используйте полный путь для папки, Вы хотите продолжить работать там вместо этого.

4
ответ дан 3 December 2019 в 06:19

Другие вопросы по тегам:

Похожие вопросы: