Кто-либо может сказать мне что не так в этом сценарии?
Это не работает в cron
, но хорошо работает, когда я обычно выполняю его.
Предупреждение: эта команда опасна и может удалить много файлов
#!/bin/bash
/bin/find . -maxdepth 1 -type d -ctime +2 -exec /bin/rm -rf {} \;
Поэтому давайте посмотрим то, что Вы делаете здесь:
/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% уверены в этом.Этот сценарий зависит от какой текущий рабочий каталог (.
) который, вероятно, отличается, когда Вы выполняете его вручную по сравнению с тем, когда крон выполняет его.
Используйте полный путь для папки, Вы хотите продолжить работать там вместо этого.