Просто обновление sshd обычно не будет заменять ключ хоста. Так да просто обновляют его, и это должно быть прекрасным.
Примечание: Вам обычно не будет нужно это, но если Вы хотите быть на безопасной стороне, можно создать резервное копирование ключей хоста ssh и скопировать их назад после обновления системы. Обычно необходимо было бы скопировать /etc/ssh/ssh_host*
. Если что-то пошло не так, как надо, можно восстановить файлы позже.
На самом деле, вторая форма touch filename
ничего не удаляет из файла - он только создает пустой файл, если Вы не существовали или обновляете измененную в последний раз дату существующего файла.
И третье filename < /dev/null
попытки выполнить имя файла с /dev/null
как введено.
cp /dev/null filename
работы.
Что касается эффективного, самое эффективное было бы truncate -s 0 filename
; посмотрите здесь: http://linux.die.net/man/1/truncate.
Иначе, cp /dev/null filename
или > filename
оба прекрасны. Они оба открывают и затем закрывают файл, с помощью усеченной-на-открытом установки. cp
также открывается /dev/null
, таким образом, это делает его незначительно медленнее.
С другой стороны, truncate
вероятно, было бы медленнее, чем > filename
когда выполнено из сценария начиная с выполнения усеченной команды требует, чтобы система открыла исполняемый файл, загрузила его, и выполнение он.
Другой вариант:
echo -n > filename
Из справочной страницы echo
:
-n Не печатать завершающий символ новой строки.
Существует встроенная команда " :", которая доступна в sh,csh,bash и других возможностях, которую можно легко использовать с оператором перенаправления вывода >
обрезать файл:
#!/usr/bin/env bash
:> filename
Что мне нравится в этом, так это то, что ему не нужны никакие внешние команды, такие как «эхо» и т. д.
Одно большое преимущество усечения файлов вместо их удаления/восстановления заключается в том, что приложения, которые работают с этим файлом (, например. кто-то делает tail -f filename
или программное обеспечение для мониторинга,... )не нужно заново открывать его. Они просто могут продолжать использовать файловый дескриптор и получать все новые данные.
truncate
является самым эффективным? – Stéphane Chazelas 30.08.2013, 09:24> filename
методы должны звонить. – ash 30.08.2013, 09:26truncate(2)
не делает этого. – Stéphane Chazelas 30.08.2013, 11:01touch filename
, inode останется тем же (если был файл прежде)? – pMan 30.08.2013, 11:30ls -i
– terdon♦ 30.08.2013, 16:02