У меня есть папка, в которой много файлов. Я хочу удалить файлы старше 30 дней, поэтому использую команду:
find cache/ -mtime +30 -exec rm {} \;
Но мой сеанс SSH отключается до завершения команды.
Как я могу ограничить количество файлов, которые удаляются за один раз? Например:
find cache/ -mtime +30 -LIMIT 10000 -exec rm {} \;
Запустите это в screen
сеанс. Таким образом, когда шпатлевка отключается, задание все еще выполняется на сервере. Просто подключитесь и используйте screen -r
чтобы повторно прикрепить сеанс экрана, чтобы увидеть прогресс.
Вы также можете запустить команду с помощью nohup
, как это:
nohup find cache/ -mtime +30 -exec rm {} \; &
затем cat nohup.out
следить за выходом.
Вы можете сделать что-то вроде:
find cache/ -mtime +30 | head -n 10000 | xargs rm
Это сработало бы, если бы имена файлов были достаточно «ванильными» (без пробелов, специальных символов и т. Д.) И короткими.
Но если вы предпочитаете просто дождаться завершения вашей исходной команды, вы можете просто указать PuTTY, чтобы он периодически отправлял SSH-сообщения keepalive; видеть документы PuTTY для подробностей. Я обычно использую значение от 45 до 60 секунд.
find cache/ -mtime +30 -print0 | xargs -0 rm -v
Затем он будет выводить каждый удаленный файл, что должно предотвратить время ожидания сеанса.
Или поместите это в cron, так как похоже, что это должно быть автоматизировано.