Решение этого просто. Во-первых, после приостановки и возобновления программа pm-suspend выполняет серию скриптов в /etc/pm/sleep.d и /usr/lib/pm-utils/sleep.d. Поэтому мое решение заключается в добавлении скрипта, который выполняет следующие действия:
После приостановки записи текущего времени и регистрации события пробуждения с использованием rtcwake. После возобновления проверьте текущее время на указанное время сверху. Если прошло достаточно времени, мы, вероятно, проснулись из-за события таймера rtc. В противном случае мы рано проснулись из-за пользовательского события (например, открытия экрана ноутбука). Если мы проснулись из-за таймера rtc, немедленно выпустите команду «pm-hibernate», чтобы перейти в спящий режим.Вот сценарий, который делает это. Назовите его 0000rtchibernate и поместите его в каталог /etc/pm/sleep.d (значение 0000 важно, так что сценарий выполняется сначала при приостановке и последний раз в возобновлении).
#!/bin/bash
# Script name: /etc/pm/sleep.d/0000rtchibernate
# Purpose: Auto hibernates after a period of sleep
# Edit the "autohibernate" variable below to set the number of seconds to sleep.
curtime=$(date +%s)
autohibernate=7200
echo "$curtime $1" >>/tmp/autohibernate.log
if [ "$1" = "suspend" ]
then
# Suspending. Record current time, and set a wake up timer.
echo "$curtime" >/var/run/pm-utils/locks/rtchibernate.lock
rtcwake -m no -s $autohibernate
fi
if [ "$1" = "resume" ]
then
# Coming out of sleep
sustime=$(cat /var/run/pm-utils/locks/rtchibernate.lock)
rm /var/run/pm-utils/locks/rtchibernate.lock
# Did we wake up due to the rtc timer above?
if [ $(($curtime - $sustime)) -ge $autohibernate ]
then
# Then hibernate
rm /var/run/pm-utils/locks/pm-suspend.lock
/usr/sbin/pm-hibernate
else
# Otherwise cancel the rtc timer and wake up normally.
rtcwake -m no -s 1
fi
fi
Надеюсь, этот код
Измените значение тайм-аута autohibernate=7200 вверху, на сколько бы секунд вы не спали, прежде чем переходить в спящий режим. Текущее значение выше 2 часов. Обратите внимание, что ваш ноутбук пробуждается в это время в течение нескольких секунд, в то время как он выполняет функцию спящего режима.
Итак, если вы планируете положить свой ноутбук в корпус, не приостанавливайте его, а вместо него сядьте в спячку. В противном случае ваш ноутбук может перегреться в esp. если он находится в плотно прилегающем корпусе (хотя он будет работать только на несколько секунд до минуты).
Я использовал этот метод в течение последних нескольких дней, пока он был успешным (и спас меня от мертвой батареи сегодня днем). Наслаждайтесь.
Для других дистрибутивов Linux, которые используют systemd и более новые версии Ubuntu, это должно работать, если вы поместите скрипт в /usr/lib/systemd/system-sleep вместо /etc/pm/sleep.d. Кроме того, замените команду /usr/sbin/pm-hibernate на systemctl hibernate.
sudo dpkg --configure -a
Затем повторите попытку.
Эта проблема также может возникнуть, если есть другие установки.
Попробуйте с помощью
sudo apt-get update
Если вы все еще получите ошибку блокировки, попробуйте эту команду. Он даст деталь процесса
ps -e | grep -e apt -e adept | grep -v grep
Затем завершите процесс, используя идентификатор процесса, затем выполните update
И также вы можете удалить этот файл, который ваша проблема решит
rm /var/lib/dpkg/lock
sudo dpkg --set-selections < package.list && sudo apt-get dselect-upgrade
У меня была такая же ошибка, это сработало для меня:
Эта ошибка указывает, что вы (или какая-то программа / скрипт) изменили разрешения файла / var / lib / dpkg / status. Пожалуйста, измените их с помощью: «sudo chmod 644 / var / lib / dpkg / status», чтобы исправить проблему.Я закончил открытие терминала:
sudo nautilus
, перемещаясь по папкам / файлам и меняя разрешения на
Эта ошибка указывает, что вы ( или какой-либо программы / скрипта) изменили разрешения файла / var / lib / dpkg / status. Пожалуйста, измените их с помощью: «sudo chmod 644 / var / lib / dpkg / status», чтобы устранить проблему.
ROOT - FOLDER: ПОЛНЫЙ ДОСТУП / ФАЙЛЫ: ПРОЧИТАТЬ ТОЛЬКОME - FOLDER: FULL ACCESS / FILES: READ WRITE
Проблема возникла, когда мои разрешения были привинчены при попытке исправить проблему ядра, которую я имел с драйвером Nvidia ... но это уже другая история ..
В редкие времена вы можете получить эту проблему без других блокировок процесса dpkg для пользователя с привилегией sudo.
Я столкнулся с этой проблемой по неизвестным причинам, что потерял эту папку.
Я попробовал все другие предлагаемые здесь решения, но никто не работал. Мой простой способ - скопировать папку /var/lib/dpkg с другого сервера с той же версией Ubuntu.
Надеюсь, что это поможет, если с ними случится одно и то же.