Глядя на реализацию sort
, к которой у меня есть самый простой доступ (OpenBSD), похоже, что вы потеряете данные, если входной файл будет добавлен между
sort
, закончив чтение данных из входного файла и приступив к фактической сортировке, и sort
, переименовывающая свой временный выходной файл в имя реального выходного файла (задаваемое -o
аргумент) непосредственно перед выходом. Я не вижу способа предотвратить это, кроме как временно приостановить любой процесс записи в файл перед его сортировкой, а затем запустить их снова, когда сортировка будет завершена. Это можно сделать с помощью kill -STOP
и kill -CONT
соответственно.
Процесс записи в файл должен будет снова открыть его для записи, поскольку в противном случае он будет выполнять запись в файл, которого больше нет в структуре каталогов (поскольку он был заменен). GNU sort
, похоже, заменяет содержимое исходного файла отсортированными данными, так что это не проблема.