Как периодически удалять все содержание из файла, не удаляя его

Самые современные дистрибутивы Linux используют udev для динамичного заполнения содержания /dev.

Обычно Вашему корневому FS только нужны статические записи для /dev/console и /dev/null для начальной загрузки. После того, как загруженный, a tmpfs смонтируйте оверлейные программы /dev, для обеспечения полного комплимента узлов устройства.

Некоторые шаги диагноза..

  • Определите, поддерживает ли Ваше ядро udev с: dmesg | grep udev
  • Проверьте, работает ли демон на самом деле с: ps ax | grep udevd
  • Проверьте, смонтирован ли udev с: grep udev /proc/mounts

Вы можете и должны проверить содержание /etc/udev согласно ответу Kyle. Хотя udev должен функционировать на базовом уровне без любых правил вообще, таким образом, это, менее вероятно, будет причина.

Не идите, создавая все узлы вручную, потому что это возвратится, чтобы укусить Вас позднее.

3
задан 9 January 2012 в 00:45
6 ответов

Возможно, текущий рабочий каталог не то, что Вы ожидаете, когда крон выполнит сценарий. Попытайтесь указать полный путь к file.txt. Кроме того, это должно освободить файл также, на всякий случай существует некоторая проблема с командой sed:

echo > file.txt
4
ответ дан 3 December 2019 в 04:37

Можно попробовать простой >file.txt

$ cat file.txt
this is a test
$ >file.txt
$cat file.txt
$
10
ответ дан 3 December 2019 в 04:37

Можно также использовать logrotate, который дает Вам опцию не просто освобождения файла, но и архивация (например, сжимаясь) предыдущее содержание файла, и даже отправляет файл по почте Вам.

4
ответ дан 3 December 2019 в 04:37

Я сделал бы это: mv file file.bak && touch file && rm file.bak

Я перемещаю файл сначала, в случае, если система, оказывается, имеет его открытый.

1
ответ дан 3 December 2019 в 04:37

Можно даже использовать усеченный (1), если система имеет его.

1
ответ дан 3 December 2019 в 04:37

Традиционный un*x способ "освободить" файл:

$ cat /dev/null > myfile

Перемещение файла и касание нового файла (следовательно, изменение дескриптора файла) могут препятствовать тому, чтобы существующие приложения продолжили писать в файл, так, чтобы обычно был нежелательный. Если копия, если существующий файл требуется, можно сделать что-то как (хотя, обратите внимание, что это не является атомарным, таким образом, некоторая дата может быть дублирована в обоих файлах):

$ cp myfile myfile-$(date '+%F') && cat /dev/null > myfile

И, как упомянуто, задания 'крона' обычно не работают в каталоге, который Вы ожидаете; но Вы можете "CD" к своему желаемому каталогу в сценарии, чтобы сделать работу и все еще использовать относительные пути.

2
ответ дан 3 December 2019 в 04:37

Теги

Похожие вопросы