Это не работает, потому что перенаправление выполняется оболочкой, не командой, к которой это относится. Но Ваша оболочка не работает как корень, только echo 'text'
.
Общий прием, когда у Вас должны быть корневые полномочия записать в файл, но не генерировать данные, должен использовать tee
:
echo 'text' | sudo tee -a /file.txt
tee
печатает текст к stdout, также. Для отключения звука его так, это ведет себя более подобное для окружения добавления (>>
), направьте stdout к /dev/null
:
echo 'text' | sudo tee -a /file.txt > /dev/null
Если Вы действительно должны базироваться полномочия генерировать данные, можно выполнить два отдельных sudo
команды, или выполненный оболочка внутри sudo
и сделайте перенаправление там (осторожный с заключением в кавычки).
sudo echo 'text' | sudo tee -a /file.txt
sudo sh -c 'echo "text" >>/file.txt'
При перезаписи вместо добавления, если Вы привыкли к своей оболочке, отказывающейся усекать существующий файл с >
оператор (set -o noclobber
), помните, что эта защита не будет применяться. sudo sh -c 'echo >/etc/passwd'
и sudo tee /etc/passwd
перезапишет /etc/passwd
, Вам было бы нужно sudo sh -o noclobber -c 'echo >/etc/passwd'
для этого noclobber
установка, к которой также будут относиться sh
запущенный sudo
.
Это зависит от реализации спящего режима. Даже при ограничении вопроса Linux реализация развивалась со временем.
Во-первых, полагайте, что часть RAM используется для дисковых кэшей. Это не должно быть перемещено в подкачку, поскольку она может быть перезагружена от диска после системных резюме. В системе с хорошим балансом стоимости/эффективности это типично приблизительно для половины RAM, выделяемой кэшам. (См. также, Почему подкачка использования, когда будет более чем достаточно RAM.) В соответствии с Linux, некоторые ранние реализации сохранили бы всю выделенную память в подкачку, но текущую реализацию (s?) спящего режима пропускают дисковые кэши.
Во-вторых, некоторые системы сжимают память, как она записана в подкачку, которая может сделать точное необходимое количество из подкачки трудно для предсказания. Некоторые версии поддержки спящего режима Linux поддерживали сжатие; я не знаю, делают ли текущие.
То, что можно обычно ожидать, нет ли достаточной области подкачки, - то, что спящий режим перестанет работать: система попытается сохранить (полезное) содержание RAM в подкачку, и как только она обнаруживает, что нет достаточного количества пространства, попытка спящего режима прерывается (обычно с сообщением об ошибке на консоли и в системных журналах). Насколько я знаю, Linux всегда вел себя как это (не, что существует действительно другое разумное поведение).
/var/log/kern.log
. Я не знаю, является ли отсутствие сообщения на консоли причудой этой конкретной версии ядра или преднамеренной конфигурации Ubuntu (я знаю, что они сознательно подавили некоторый другой консольный вывод). – Gilles 'SO- stop being evil' 17.11.2010, 21:32