Рабочий стол Cinnamon лагает, пикает процессор каждую секунду

С gnu вы можете попробовать:

find "$(pwd)" -mindepth 2 -maxdepth 2 -type d -printf "d%h\0%T@ %p\0" | awk -v RS="\0" '
  /^d/ {directoryname=substr($0,2)}
  /^[0-9]/ && (!lmtimes[directoryname] || lmtimes[directoryname] < $1) {
    lmtimes[directoryname]=$1;
    lmtimedns[directoryname]=substr($0,index($0," ")+1);
  }
  END {for (directoryname in lmtimedns) print lmtimedns[directoryname]}
  '

Эта версия была протестирована против странных имен, содержащих специальные символы: \n " etc.

$(pwd) выполнить команду pwd, которая выводит абсолютное имя текущего каталога.

find $(pwd) поиск по текущему каталогу, будут выведены полные пути каталогов

Фильтр -mindepth 2 -maxdepth 2 -type d выбирает только каталоги второго уровня, где FOLDER в текущем каталоге находятся на уровне 1, а их SUB_FOLDER на уровне 2.

-printf "d%h\0%T@ %p\0" печатает для каждого SUBFOLDER, найденного, эту информацию:

d FOLDER \0 last modif time in second since EPOCH [space] SUBFOLDER \0 etc.

\0 не может быть частью имени, поэтому это идеальный разделитель.

awk -v RS="\0" рассматривает \0 как разделитель записей.

/^d/ {directoryname=substr($0,2)}: этот regex верен, когда запись начинается с d; directoryname переменная обновляется именем FOLDER, которое состоит из всех символов сразу после d, по конструкции, благодаря printf.

/^[0-9]/ : этот regexверен, когда запись начинается с цифры. По конструкции, благодаря printf, первое поле ($1: например, все символы до ̀[пробел] символа) текущей записи содержит время последнего изменения.

&& (!lmtimes[directoryname] || lmtimes[directoryname] < $1): lmtimes - это ассоциативный массив (карта пар [ключ, значение]). Он используется для хранения самого нового времени последней модификации текущего SUBFOLDER для текущего FOLDER (directoryname). Выражение будет true, если для directoryname еще не сохранено время последнего изменения или если уже сохраненное время последнего изменения старше, чем время из текущего SUBFOLDER.

Если последнее выражение истинно, и время последнего изменения, и имя FOLDER сохраняются с помощью ключа directoryname в lmtimes и lmtimedns, соответственно.

END {for (... : Когда все записи были разобраны, выводится каждое имя SUBFOLDER с самым новым временем последнего изменения.

----

Для истории команда для вывода списка имен файлов с последним временем модификации для каждого каталога:

 find "$(pwd)" -depth -type f -printf "d%h\0%T@ %p\0" | awk -v RS="\0" '
  /^d/ {
    directoryname=substr($0,2);
  }
  /^[0-9]/ {
    if (!lmtimes[directoryname] || lmtimes[directoryname] < $1) {
      lmtimes[directoryname]=$1;
      lmtimefns[directoryname]=substr($0,index($0," ")+1);
    }
  }
  END {
    for (directoryname in lmtimefns) {
      print lmtimefns[directoryname];
    }
  }'
4
01.11.2018, 15:25
3 ответа

Сначала я задал этот вопрос на форуме Linux Mint, где mr_raiderпредоставил решение. Все заслуги принадлежат ему.

Проблема была вызвана драйверами AMD по умолчанию. Решение заключается в установке обновленной версии драйверов oibaf AMD. Порядок действий:

sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update
sudo apt upgrade

После этого и перезагрузки лагов больше нет.

Тема форума доступна здесь:
[РЕШЕНО] Cinnamon тормозит, вызывая всплески производительности процессора каждую секунду

4
27.01.2020, 20:57

У меня также была эта проблема после обновления до Mint 18.3

У меня NVidia, и я пытался обновить свои драйверы, но это не помогло. Для меня это был новый драйвер (в моем случае 340.106 ), который был проблемой.

После того, как я вернулся к 340.104, все снова стало замечательно.

Я просто хотел опубликовать сообщение, если у кого-то еще нет такой же проблемы.

Спасибо

1
27.01.2020, 20:57

Вы также можете попробовать выйти и снова войти в систему с отключенным программным рендерингом.

0
26.02.2020, 16:05

Теги

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