Удалите самые старые папки + файлы (50 ГБ) от папки, когда доля/HD достигнет 95%-й полной мощности

Из Википедии:

На Unix и подобных Unix операционных системах компьютера, процессе-зомби или более не существующем процессе процесс, который завершил выполнение, но все еще имеет запись в таблице процессов. Эта запись все еще необходима для разрешения процесса, который запустился (теперь зомби) процесс для чтения его статуса выхода.
[...]
Когда процесс заканчивается, вся память и ресурсы, связанные с ним, освобождена так, они могут использоваться другими процессами. Однако запись процесса в таблице процессов остается. Родитель может считать статус выхода ребенка путем выполнения системного вызова ожидания, в котором этапе удален зомби.

1
07.05.2014, 00:55
2 ответа

Это должно работать:

DIRS="a/ b/"
MAXDELBYTES="53687091200" # 50GB
DELBYTES="0"

find $DIRS -type f -printf "%T@ %s %p\n" | sort -r -n | while read time bytes filename
do
    rm -fv "$filename"
    DELBYTES=$((DELBYTES + bytes))

    if [ $DELBYTES -ge $MAXDELBYTES ]; then break; fi
done
4
27.01.2020, 23:21
  • 1
    Вы могли упростить это путем изменения | while read line кому: | while read bytes filename и удаление echo | cut вычисления. –  Tim Kennedy 06.08.2012, 19:38
  • 2
    Как это удовлетворяет “эту потребность быть самыми старыми файлами/папками” часть требования? –  manatwork 06.08.2012, 19:46
  • 3
    @manatwork, который это не сделало, я забыл включать время изменения. Обновленный это и теперь это должно работать как ожидалось.Спасибо! –  scai 06.08.2012, 19:59
  • 4
    кто-либо, который может помочь после моего редактирования? –  Jasper 07.08.2012, 12:51
  • 5
    @Jasper, с какой точно? Вы просто вставили некоторый случайный код без любого вопроса –  scai 07.08.2012, 13:44

scai, autodelete.txt является файлом, который я создал в окнах и загрузил на долю Linux :) Теперь я сделал этот код в нано из-за окон проблемами кода Linux.

Но теперь это дает набор ошибки

root ~/.config # sh autodelete
find: unrecognized: -printf
BusyBox v1.20.2 (2012-08-09 05:49:15 CEST) multi-call binary.

Usage: find [PATH]... [OPTIONS] [ACTIONS]

Search for files and perform actions on them.
First failed action stops processing of current file.
Defaults: PATH is current directory, action is '-print'

        -follow         Follow symlinks

Actions:
        ! ACT           Invert ACT's success/failure
        ACT1 [-a] ACT2  If ACT1 fails, stop, else do ACT2
        ACT1 -o ACT2    If ACT1 succeeds, stop, else do ACT2
                        Note: -a has higher priority than -o
        -name PATTERN   Match file name (w/o directory name) to PATTERN
        -iname PATTERN  Case insensitive -name
        -path PATTERN   Match path to PATTERN
        -ipath PATTERN  Case insensitive -path
        -type X         File type is X (one of: f,d,l,b,c,...)
        -links N        Number of links is greater than (+N), less than (-N),
                        or exactly N
If none of the following actions is specified, -print is assumed
        -print          Print file name
        -exec CMD ARG ; Run CMD with all instances of {} replaced by
                        file name. Fails if CMD exits with nonzero

autodelete: line 11: bytes: not found
0
27.01.2020, 23:21
  • 1
    В сценарии я отправил нет никаких байтов в строке 11. Кажется, что Вы изменили сценарий. И это не правильное место для такого обсуждения, лучше используйте некоторый форум и горячий сайт справки. –  scai 22.08.2012, 09:33
  • 2
    , где я могу найти форум, который может помочь мне? –  Jasper 23.08.2012, 09:21
  • 3
    хорошо узнал wy, он не работает. теперь я отправил новый вопрос, таким образом, этот не становится массово разосланным. ссылка –  Jasper 23.08.2012, 10:23
  • 4
    У Вас, кажется, есть версия не-GNU находки, которая не имеет никакой-printf опции, таким образом, она не проложит себе путь в Вашей системе. –  scai 23.08.2012, 14:46

Теги

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