Eine Datei vorne abschneiden geht eigentlich nur über Kopieren des Rests in eine neue Datei. Zu dieser Anforderung habe ich auch schon mal was gesucht, aber nichts gefunden. Ist auch von daher nachvollziehbar, dass man nicht einfach mal eben den Dateizeiger auf eine andere Position setzen kann. Wenn das ginge, dann nur in Block-weisen Schritten aber nicht beliebig und das bringt dann sowieso nichts.
Kannst du das so umbauen dass die laufende Datei bei Erreichen einer bestimmten Größe automatisch umbenannt wird und die Prozesse sich eine neue Datei anlegen? Dann hättest du die Aufteilung in entsprechende Blöcke ohne weiteren Kopieraufwand.
Die jetzige große Datei müsstest du auch umbenennen (damit sie nicht weiter beschrieben wird). Dann liest du sie zeilenweise aus und schreibst neue Dateien mit jeweils 20000 Zeilen.
Das ganze natürlich sauber mit den Prozessen synchronisiert, damit die alle immer wissen wo sie hinschreiben müssen und warten bis es wieder eine Zieldatei gibt.