Опорожнение содержимого текстового файла

Supported readers (run command lsusb to find out the ID of your reader) ============ 045e:00bb 061a:0110 147e:1002 045e:00bc 08ff:1600 147e:1003 045e:00bd 08ff:2500 147e:2015 045e:00ca 08ff:2580 147e:2016 0483:2015 08ff:5501 147e:3000 0483:2016 138a:0001 147e:3001 05ba:0007 147e:1000 147e:5002 05ba:0008 147e:1001 147e:5003 05ba:000a

Установка

Прежде всего, если вы ранее установили GUI отпечатка пальца, полностью избавитесь от него. Удалите все двоичные файлы, общие библиотеки, любые другие файлы и отмените все изменения, внесенные вами в файлы конфигурации системы (особенно в файлах под /etc/pam.d/). Добавьте этот PPA к своим источникам:
sudo add-apt-repository ppa:fingerprint/fingerprint-gui
sudo apt-get update
Установите пакеты:
sudo apt-get install libbsapi policykit-1-fingerprint-gui fingerprint-gui
Выйдите из сеанса и зайдите в систему (нам нужны новые настройки по умолчанию для подключения).

Установка

После запуска установки Fingerprint GUI (можно найти в разделе «Система»> «Настройки») и запишите отпечатки пальцев.

Это должно

Попробуйте заблокировать свой экран, выйти и войти в sudo в терминале и запустить графические приложения, требующие привилегии root.

1
задан 15 September 2013 в 07:24

3 ответа

Для этой цели создан инструмент:

truncate -s 0 filename

Это очистит содержимое, но оно все равно будет тем же самым (индод останется таким же).

Это важно, потому что некоторые программы содержат дескриптор файла «inode». Предположим, вы «пустили» файл, используя наивный метод удаления и воссоздания файла. Некоторые программы могут по-прежнему держать дескриптор старого файла (со старым контентом), даже если он больше не отображается в обычном виде, например ls.

Некоторые ссылки на более подробные сведения в конце этого ответа .

Другой способ, возможно, легче запомнить:

echo -n > filename

Это также сохраняет тот же индекс.

Обратите внимание, что оба truncate и echo -n не определены inode .

Для соблюдения POSIX используйте cat /dev/null:

cat /dev/null > filename

Еще один способ, больше

> filename

Если файл для обрезания требует прав root для записи, тогда следующие строки не будут работать, как ожидалось:

[ f5]

Это связано с тем, что перенаправление выполняется оболочкой еще до выполнения sudo. Это означает, что доступ на запись к файлу выполняется с использованием привилегий пользователя, который запускает оболочку, а не привилегий, которые будут предоставлены sudo.

Обходным решением является отсрочка перенаправления в оболочку, выполненную используя привилегии sudo, такие как:

sudo sh -c "echo -n > filename"

Используя truncate, вам не нужно такое обходное решение, потому что доступ на запись не выполняется оболочкой, а truncate, который выполняется sudo, используя привилегии sudo .

sudo truncate -s 0 filename

Для некоторых подробностей о программах, в которых файл открыт, даже если файл был удален, вы можете прочитать следующее:

https: //stackoverflow.com/questions/2028874/what-happens-to-an-open-file-handler-on-linux-if-the-pointed-file-gets-moved-de https://serverfault.com/questions / 501963 / how-to-recover-free-space-on-deleted-files-without-restarting-the-referencing-pr https://unix.stackexchange.com/questions/182077/best-way-to-free- disk-space-from-deleted-files-that-are-held-open
13
ответ дан 24 May 2018 в 18:02
  • 1
    он говорит, что Permission denied, использовал имя файла chmod 755, но все же разрешение отклонено – sosytee 12 September 2013 в 13:49
  • 2
    возможно, у вас есть noclobber включен в bash? – lesmana 12 September 2013 в 13:51
  • 3
    Самый полный ответ – AbdelHady 8 June 2016 в 15:17

Чтобы автоматизировать это, вы можете использовать logrotate. Просто создайте файл конфигурации для файла, который вы хотите очистить, добавьте другие настройки, и вы можете автоматически очищать его каждый день автоматически, исходя из критериев, которые вы выбираете каждый день, или когда файл больше, чем и т. Д.

Take посмотрите, как настроить logrotate: http://linuxcommand.org/man_pages/logrotate8.html

4
ответ дан 24 May 2018 в 18:02
  • 1
    Я одобряю этот вариант сам. Мы используем файл & gt; 10 Мб " - & GT; " tar.gz его дл резервного копирования " «пустой файл». А резервные копии удаляются через 900 дней. – Rinzwind 12 September 2013 в 14:58

echo "" > foo_file - простой способ сделать это, он заменит все содержимое foo_file на «», сделав его в этом случае пустым.

Вы также можете использовать cat /dev/null > foo_file, который будет читать нулевого устройства и вообще ничего не перезаписывать файл.

3
ответ дан 24 May 2018 в 18:02
  • 1
    он говорит, что Permission denied, использовал имя файла chmod 755, но все же разрешение отклонено – sosytee 12 September 2013 в 13:55
  • 2
    Можете ли вы прочитать разрешения на доступ к файлам с помощью обычного пользователя? – Bruno Pereira 12 September 2013 в 13:58
  • 3
    да, я могу читать содержимое как обычный пользователь – sosytee 12 September 2013 в 14:02

Другие вопросы по тегам:

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