Самые современные дистрибутивы Linux используют udev для динамичного заполнения содержания /dev
.
Обычно Вашему корневому FS только нужны статические записи для /dev/console
и /dev/null
для начальной загрузки. После того, как загруженный, a tmpfs
смонтируйте оверлейные программы /dev
, для обеспечения полного комплимента узлов устройства.
Некоторые шаги диагноза..
dmesg | grep udev
ps ax | grep udevd
grep udev /proc/mounts
Вы можете и должны проверить содержание /etc/udev
согласно ответу Kyle. Хотя udev должен функционировать на базовом уровне без любых правил вообще, таким образом, это, менее вероятно, будет причина.
Не идите, создавая все узлы вручную, потому что это возвратится, чтобы укусить Вас позднее.
Возможно, текущий рабочий каталог не то, что Вы ожидаете, когда крон выполнит сценарий. Попытайтесь указать полный путь к file.txt. Кроме того, это должно освободить файл также, на всякий случай существует некоторая проблема с командой sed:
echo > file.txt
Можно попробовать простой >file.txt
$ cat file.txt
this is a test
$ >file.txt
$cat file.txt
$
Я сделал бы это: mv file file.bak && touch file && rm file.bak
Я перемещаю файл сначала, в случае, если система, оказывается, имеет его открытый.
Традиционный un*x способ "освободить" файл:
$ cat /dev/null > myfile
Перемещение файла и касание нового файла (следовательно, изменение дескриптора файла) могут препятствовать тому, чтобы существующие приложения продолжили писать в файл, так, чтобы обычно был нежелательный. Если копия, если существующий файл требуется, можно сделать что-то как (хотя, обратите внимание, что это не является атомарным, таким образом, некоторая дата может быть дублирована в обоих файлах):
$ cp myfile myfile-$(date '+%F') && cat /dev/null > myfile
И, как упомянуто, задания 'крона' обычно не работают в каталоге, который Вы ожидаете; но Вы можете "CD" к своему желаемому каталогу в сценарии, чтобы сделать работу и все еще использовать относительные пути.