Нет ничего особенного в том, какой путь вы используете для вызова программы, которая может иметь значение, будет ли учитываться его бит setuid. Несомненно, здесь происходит одно из двух.Либо
, найденная в $ PATH
, либо программа
, найденная в текущем каталоге, на самом деле не одна и та же программа
. Вы уверены, , что одна прога
находит ту же копию прога
через $ PATH
?
{{1 }} nosuid
, а один из них - нет.) prog
сам обращается к своему argv [0]
, чтобы узнать, как он был вызван, и отказывается действовать в соответствии со своими полномочиями setuid (или сбросив их), если он не найдет то, что ожидает. Если ваш find
поддерживает действие -delete
, вы обнаружите это так быстро, как только сможете, не запуская несколько процессов удаления:
find "$DIRECTORY" -name "*.$FILETYPE" -type f -mtime +"$DELETE_OLDER_THAN" \
-delete -print >> "$REMOVAL_LOGFILE" 2>&1
Вы обнаружите, что -exec rm {} \;
работает медленно, потому что создает новый процесс для каждой операции удаления. Если он есть у вашего find
,-exec rm {} +
будет быстрее, потому что будет создан один rm
процесс для значительного числа файлов. Но самым быстрым из всех однопоточных -решений будет -delete
.
С несколько большей сложностью вы можете разветвить один find.. -delete
процесс на каталог в дереве каталогов и (по крайней мере некоторые из )работающих параллельно. Но я не знаю, сколько каталогов вы обрабатываете, поэтому я не могу определить, будет ли это чистой прибылью.