Как удалить какую-либо строку из файла с помощью сценариев оболочки?

Вы не можете действительно заставить процесс работать меньше. Можно использовать nice для предоставления ему более низкого приоритета но это относительно других процессов. Способ выполнить вентилятор ЦП, в то время как процесс работает, состоит в том, чтобы использовать usleep(3) для принуждения процесса выполнение указывают определенное количество времени, но это включило бы любое исправление tar или использование LD_PRELOAD механизм для обеспечения исправленной функции это tar использование много (например. fopen(3)).

Я подозреваю, что Ваши лучшие обходные решения являются аппаратными, которые Вы упомянули на SuperUser: хранение ноутбука охлаждается и/или понижение тактовой частоты ЦП.

Раздражение, но возможно жизнеспособное обходное решение (клудж, действительно) работает на 'макроскопическом' уровне. Вместо создания tar выполните 100 мс каждые 200 мс, Вы могли заставить его выполнить одну секунду из каждых двух.Примечание: это - ужасный, ужасный клудж. Но эй, это могло бы даже работать!

tar cjf some-file.tar.bz2 /some-directory &
while true; do
    sleep 1  # Let it run for a second
    kill -STOP $! 2>/dev/null || break
    sleep 1  # Pause it for a second
    kill -CONT $! 2>/dev/null || break
done

Первое sleep корректирует время сна, второй корректирует время выполнения.как есть Теперь, это имеет 50%-й рабочий цикл. Для подавления температуры необходимо будет очень вероятно уменьшить рабочий цикл до, возможно, 25% или ниже (1 второе выполнение, сон 3 секунд = 1 из каждых 4 секунд = 25%-й рабочий цикл). Команда оболочки sleep может занять дробные времена, между прочим. Таким образом, Вы могли даже сказать sleep 0.1. Сохраните его более чем 0,001 только, чтобы быть уверенными, и не забыть, что выполнение сценария добавляет ко времени также.

9
29.05.2013, 18:02
4 ответа

Можно удалить строку из текстового файла с sed (другие инструменты существуют).

Например:

sed -i -e '/myapp/d' .bash_profile

удаляет из .bash_profile каждая строка, содержащая строку myapp.

10
27.01.2020, 20:04
sed -i '/^export MYAPP_HOME=\/opt\/myapp$/d' ~/.bash_profile
3
27.01.2020, 20:04

Файл как ~/.bash_profile жизни в корневом каталоге пользователя. Такой файл полностью находится под контролем пользователя. Глобальные действующие команды как rpm как предполагается, не изменяют такие файлы.

  • У Вас обычно есть основной конфигурационный файл, который поставляется RPM-пакетом.

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

  • Затем у Вас есть персональные конфигурационные файлы в Вашем корневом каталоге, который можно использовать для переопределения глобальной установки с персональными предпочтениями.

Команда как rpm должен только изменить первый и никогда не изменять последнего.

10
27.01.2020, 20:04
  • 1
    Можно ли предложить, чтобы URL исследовал на эту тему? –  Gyhot 29.05.2013, 18:20
  • 2
    @Gyhot unix.stackexchange.com/questions/77518 / …, хороший. Если Ваше целевое распределение имеет a /etc/profile.d каталог, отбросьте файл, содержащий это export выровняйте там. Иначе можно отредактировать /etc/profile, но очень бойтесь разрушать настройки системным администратором. –  Gilles 'SO- stop being evil' 30.05.2013, 00:10

Попробуйте vim-way:

ex -s +"g/MYAPP_HOME/d" -cwq file.txt
0
27.01.2020, 20:04

Теги

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