Почему отображение этих параметров с помощью sudo не работает? [дубликат]

Возможный дубликат :
sudo & redirect output

Это предложения powertop для экономии энергии:

echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

echo 1 > /sys/module/snd_hda_intel/parameters/power_save

Однако я не могу выполнить их из терминала даже как sudo. Идеи?

10
задан 13 April 2017 в 05:23

4 ответа

Ваша команда не работает потому что перенаправление > file сделан текущей оболочкой до выполнения команды, поэтому прежде чем sudo будет в действительности.

Существует команда, названная tee, это пишет в файл и в stdout, что он получает на его stdin: это удобно для записи чего-то в файл без перенаправления. Если файл может быть изменен только корнем, достаточно предварительно ожидать sudo кому: tee.

echo 1500 | sudo tee /proc/sys/vm/dirty_writeback_centisecs

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

sudo sh -c 'echo 1500 > /proc/sys/vm/dirty_writeback_centisecs'

Наконец, можно ввести корневую оболочку различными способами, и Вы остаетесь корнем до Вас exit явно та оболочка:

sudo su
sudo -s
sudo bash

Для получения дополнительной информации посмотрите manuale страницы sudo, su и конечно bash.

15
ответ дан 23 November 2019 в 04:18

Вместо того, чтобы создать cronjob для того, чтобы установить значения, как описано @Seppo Erviälä, можно использовать конфигурационные файлы procps и sysfsutils.

/proc/sys

Значения для /proc/sys может быть установлен в файле /etc/sysctl.conf. Сделать echo 1500 > /proc/sys/vm/dirty_writeback_centisecs персистентный, добавьте строку с:

vm.dirty_writeback_centisecs = 1500

Загрузить изменения в /etc/sysctl.conf к текущей сессии, выполненной:

sudo sysctl -p

/sys

Для того, чтобы установить значения в /sys пакет sysfsutils потребности, которые будут установлены. Конфигурационный файл расположен в /etc/sysfs.conf. Сделать echo 1 > /sys/module/snd_hda_intel/parameters/power_save персистентный, добавьте строку с:

module/snd_hda_intel/parameters/power_save = 1

Применять значения в /etc/sysfs.conf к текущей сессии, выполненной:

sudo /etc/init.d/sysfsutils restart
9
ответ дан 23 November 2019 в 04:18

Сделайте a sudo -s или a sudo su во-первых:

enter image description here

Из сценария:

# more powersave
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /sys/module/snd_hda_intel/parameters/power_save
# ./powersave 
# 

Лучшая практика была бы к ussue sudo -s прежде, чем активировать сценарий (следовательно #).

2
ответ дан 23 November 2019 в 04:18

Править: См. ответ @Lekensteyn для более надлежащего способа отредактировать /proc/sys и /sys значения по умолчанию.

Выполнение этих предложений из командной строки только включит им для Вашей текущей сессии, и они сбросят к значениям по умолчанию после перезагрузки. Если Вы хотите включить этим предложениям каждый раз, когда Ваша система запускается, необходимо превратить их в сценарий:

#!/bin/dash
echo 1500 > /proc/sys/vm/dirty_writeback_centisecs
echo 1 > /sys/module/snd_hda_intel/parameters/power_save

Можно поместить этот сценарий, где-нибудь удобный, например. /root/power_save.sh.

Затем Вы хотите удостовериться, что это работает с полномочиями пользователя root каждый раз, когда Ваша система запускается. Это может быть, покончили sudo crontab -e который открывает список основанных на времени задач для корня. Добавьте строку:

@reboot /root/power_save.sh

Не забывайте делать свой исполняемый файл сценария:

sudo chmod u+x /root/power_save.sh

Таким образом, эти опции экономии электроэнергии будут включены для всех пользователей, даже перед входом в систему, и никакой пароль не необходим для авторизации их каждый раз.

2
ответ дан 23 November 2019 в 04:18

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

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