Проблема заключалась в том, что я не запускал его с systemctl --user start
, я использовал просто systemctl start
. Сценарий bash основан на пользовательских материалах KDE, поэтому запуск сценария с sudo
не работал, что является режимом по умолчанию для служб.
Вы, вероятно, имели в виду
0 */1 * * * find /root/Downloads/complete/* -type d -mmin +60 -exec rm -r "{}" \;
, потому что в вашем примере find
будет соответствовать имени каталога (и всему, что под ним), но с подстановочным знаком оболочка расширит это до всего (кроме точки -names) в каталоге.
Вместо этого используйте только эту строку.
0 */1 * * * find /root/Downloads/complete/ \( -type f -o -type d \) -mmin +60 -delete
Будут удалены только файлы и каталоги по пути /root/Downloads/complete/
с измененным возрастом с час назад.
find /root/Downloads/complete/ -type d -mmin +60 -exec rm -r "{}" \;
Это удаляет каталог и все его содержимое, если сам каталог не изменялся в течение часа, даже если файлы в этом каталоге или в подкаталогах были недавно изменены. Это, вероятно, не то, что вы хотите.
Время модификации каталога, вероятно, не так уж полезно. Я предлагаю вам удалить старые файлы, а затем каталоги по мере их опустошения. Чтобы избежать удаления корневого каталога, передайте -mindepth 1
.
cd /root/Downloads/complete && find . -type f -mmin +60 -delete && find . -depth -mindepth 1 -type d -empty -delete
Обратите внимание, что это может привести к нарушению работы системы, например, вы можете удалить каталог, который только что был создан и который использовался другой программой. Удаление вещей на основе тайм-аута редко бывает хорошей идеей. Если вам нужно что-то удалить, вы должны сделать это, когда файлы будут обработаны к вашему удовлетворению, а не после произвольной задержки.