Удаление начального 10 МБ из открытого файла

У меня есть файл журнала размером около 100 МБ, который открывается какой-то программой, и ведение журнала постоянно продолжается в этом файле. Я хочу удалить первые 10 МБ из этого файла. Есть ли способ сделать это, не влияя на процесс ведения журнала в этот файл.

  • Как структурирована таблица открытых файлов?
  • Удаление файла по сравнению с переписыванием и ссылка на / proc / pid / fd
  • Файл для назначенных адресов inet
  • Переиндексация большого файла CSV
  • Создать и открыть файл с помощью одной команды?
  • Задача Cron для удаления файлов старше 3 дней
  • Как изменить разрешение и владельца группы файла одновременно
  • Как архивировать структуру dir, игнорируя файлы и диски без разрешения на чтение
  • 3 Solutions collect form web for “Удаление начального 10 МБ из открытого файла”

    Чтобы пропустить первые 10 МБ, вы можете использовать dd следующим образом:

     dd if=ORIGINAL_FILE of=10MB_LESS_FILE bs=512 skip=14880 

    Это скопирует исходный файл в 10MB_LESS_FILE .

    Невозможно удалить данные с начала файла на месте. Усеченный вызов может обрезать данные с конца, но нет эквивалента для отсечения пространства произвольно.

    Поэтому самое лучшее, что вы можете сделать, это скопировать файл, пропуская бит, который вы не хотите.

    Вы должны убедиться, что индексный дескриптор файла, открытый одним или несколькими процессами, не изменяется для продолжения входа в систему. Для этого выполните:

     cp mylog mylog.new < modify, trim or mangle `mylog.new` > cp mylog.new mylog 
    Linux и Unix - лучшая ОС в мире.