cat /dev/null
является немного замысловатым способ записать команду, которая не производит вывода. :
или true
более очевидные.
Во всем из cat /dev/null > file
, : > file
, и даже > file
в большинстве оболочек оболочка открывает файл с O_TRUNC на stdout, затем запускает приложение, которое ничего не производит, затем файл закрыт и оставлен усеченный.
Однако в этом случае или при использовании truncate
системный вызов, если процесс, который заполняет тот файл, не открыл его с флагом O_APPEND, в следующий раз, когда он пишет в дескриптор файла, что имеет открытый на файле, он запишет данные при смещении, которым это было в файле.
Поскольку HFS + не поддерживает редкие файлы, который означает, что пространство перед тем смещением должно будет быть перераспределено и заполнено нулями системой.
Так, необходимо уничтожить приложение, которое пишет в тот файл прежде, чем усечь его. Или необходимо удостовериться, что приложение открывает файл с O_APPEND
(как с >>
при использовании перенаправления оболочки).
Если Вы хотите экспериментировать с ним:
$ exec 3> x
$ yes | head -n 50000 >&3
$ ls -ls x
200 -rw-r--r-- 1 me me 100000 Dec 16 21:32 x
Теперь fd 3 моей оболочки составляет 100 000 байтов в файле
$ : > x
$ ls -ls x
0 -rw-r--r-- 1 me me 0 Dec 16 21:34 x
Теперь файл является усеченным (размер 0, никакое пространство, использованное на диске).
$ echo >&3
$ ls -ls x
200 -rw-r--r-- 1 me me 100001 Dec 16 21:34 x
Пишущий 1 байт в файл при смещении 100000, файл теперь 100 001 байт шириной, первые все нули, использовал бы по 100k на HFS +, но о всего одном дисковом блоке в большинстве других файловых систем Unix
С другой стороны, с:
$ exec 3>> x
$ yes | head -n 50000 >&3
$ ls -ls x
200 -rw-r--r-- 1 me me 100000 Dec 16 21:35 x
$ : > x
$ echo >&3
$ ls -ls x
8 -rw-r--r-- 1 me me 1 Dec 16 21:36 x
Запись 1 байта в файл не при смещении 100000, а в конце файла из-за O_APPEND
. Файл 1 байт шириной, и занимает место, должен был содержать тот один байт.
Наличие там deb-файла не означает, что его можно использовать для всех выпусков. Файлы там используются всеми от squeeze
до experimental
. В данном случае, в хризо-бэкпортах
, единственным пакетом xfce4
, связанным с xfce4-weather-плагином
, где версия 0.8.3 была перенесена в хризо-бэкспорт
.
Чтобы получить XFCE 4.10, вам придется использовать другое репо.
Добавьте Mepis Repo к /etc/apt/sources. list
(Mepis основан на Debian Stable):
deb http://main.mepis-deb.org/mepiscr/xfce/ xfce-4.10 main
Запустите aptitude update
Импортируйте ключ репо и установите бэкпорт:
gpg --keyserver pgp.mit.edu --recv-keys 81E77EAF14E225A0
gpg --armor --export 14E225A0 | apt-key add -
apt-get -t xfce-4.10 install xfce4
Mepis Community Repo также собирается для 32 и 64 бит:
deb http://main.mepis-deb.org/mepiscr/repo/ mepis12cr main non-free
С помощью этого метода вы можете сохранить sysvinit sysvinit
и избежать systemd
.
Чтобы впоследствии применить обновления к xfce 4.10 , вам необходимо:
aptitude update && aptitude upgrade