Раніше в системах Linux я мав змогу врізати великі відкриті файли журналу (тобто файл, який активно записується процесом) за допомогою cat /dev/null > file.log
.
Однак 10.9 (Mavericks), мабуть, це не так. У мене є файл 11 ГБ, який записується в додаток, але коли я виконую ту саму команду з вказаним файлом, схоже, нічого не відбувається.
Коли я спробую це у файлі тривіального розміру, він спрацьовує.
Ось ls -l /dev/null
:
crw-rw-rw- 1 root wheel 3, 2 Dec 16 12:49 /dev/null
Я також намагався cp /dev/null file.log
безрезультатно.
Думаючи, що я можу скористатися функцією скорочення ( man 2 truncate
у Дарвіні), я скомпілював це і запустив його до двох файлів, одного тривіального розміру, а другого фактичного файлу журналу. Знову ж таки, він працював проти тривіального файлу і не працював на значно більший журнал.
/*
* Copyright (c) 2013 Thomas de Grivel <thomas@lowh.net>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
...
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <unistd.h>
int main (int argc, const char **argv)
{
int e = 0;
while (--argc) {
argv++;
if (truncate(*argv, 0)) {
e = 4;
warn("%s", *argv);
}
}
return e;
}
Процес повертається 0
незалежно від того, який файл я використовую.
du -h /tmp/file.log
результати в11G /tmp/file.log
du
чиdu -h
каже? Чи можливий файл рідкісний файл?