Вопрос или проблема
Я пытаюсь перевести свою систему в спящий режим с помощью, например,
rtcwake -v -m disk -s 60
и получаю следующий вывод
rtcwake: RTC интерпретируется как UTC
Используется UTC.
delta = 1
tzone = 0
tzname = UTC
systime = 1524206927, (UTC) Пт Апр 20 06:48:47 2018
rtctime = 1524206926, (UTC) Пт Апр 20 06:48:46 2018
Сигнал 0, sys_time 1524206927, rtc_time 1524206926, секунд 60
rtcwake: пробуждение из "диска" с использованием /dev/rtc0 в Пт Апр 20 06:49:47 2018
Режим приостановки: диск; приостановка системы
rtcwake: ошибка записи
Система, похоже, начинает входить в режим приостановки, но сразу же возвращается обратно. Я использую Ubuntu 16.04.4 LTS (GNU/Linux 4.13.0-38-generic x86_64). Есть ли какие-либо детали, которые могут помочь найти коренную причину проблемы (вывод dmesg, /var/log/syslog и т.д.)?
Заранее спасибо,
Бернд
Я нашел в /var/log/syslog
следующее:
18 авг 00:13:54 voxel001 kernel: [115439.921446] задача:lockd состояние:I стек: 0 pid: 3462 ppid: 2 флаги:0x00004000
18 авг 00:13:54 voxel001 kernel: [115439.921453] Трассировка вызовов:
18 авг 00:13:54 voxel001 kernel: [115439.921456] <TASK>
18 авг 00:13:54 voxel001 kernel: [115439.921460] __schedule+0x24e/0x590
18 авг 00:13:54 voxel001 kernel: [115439.921468] schedule+0x69/0x110
18 авг 00:13:54 voxel001 kernel: [115439.921471] schedule_timeout+0x105/0x140
18 авг 00:13:54 voxel001 kernel: [115439.921478] svc_get_next_xprt+0xf1/0x190 [sunrpc]
18 авг 00:13:54 voxel001 kernel: [115439.921551] svc_recv+0x1a9/0x330 [sunrpc]
18 авг 00:13:54 voxel001 kernel: [115439.921616] lockd+0xa9/0x1c0 [lockd]
18 авг 00:13:54 voxel001 kernel: [115439.921629] ? set_grace_period+0xa0/0xa0 [lockd]
18 авг 00:13:54 voxel001 kernel: [115439.921640] kthread+0x12a/0x150
18 авг 00:13:54 voxel001 kernel: [115439.921645] ? set_kthread_struct+0x50/0x50
18 авг 00:13:54 voxel001 kernel: [115439.921651] ret_from_fork+0x22/0x30
18 авг 00:13:54 voxel001 kernel: [115439.921659] </TASK>
18 авг 00:13:54 voxel001 kernel: [115439.921661] задача:nfsd состояние:I стек: 0 pid: 3541 ppid: 2 флаги:0x00004000
NFS блокировал заморозку. Таким образом, перед вызовом rtcwake
, я выполнил:
systemctl stop nfs-server.service
и затем rtcwake
смог перевести систему в спящий режим. Посмотрите в журнал, чтобы выяснить, что блокирует спящий режим.
Ответ или решение
Для решения проблемы с ошибкой "write error" при использовании команды rtcwake
, давайте рассмотрим несколько аспектов.
Во-первых, вы используете команду rtcwake
следующим образом:
rtcwake -v -m disk -s 60
Это должно перевести вашу систему в спящий режим (disk) на 60 секунд. Однако, как указано в вашем выводе, система начинает переход в спящий режим, но затем возвращается, и вы получаете ошибку:
rtcwake: write error
Возможные причины
Ошибка может возникать по нескольким причинам:
-
Службы, блокирующие переход в спящий режим: Некоторые запущенные службы могут блокировать переход в режим сна или гибернации. Например, в вашем случае служба NFS (Network File System) блокировала этот процесс.
-
Проблемы с конфигурацией RTC (real-time clock): Некоторые конфигурации RTC могут привести к ошибкам при попытке записи.
-
Ошибки драйверов или оборудования: Возможно, ваше оборудование или драйвера не полностью поддерживают режим гибернации.
Решение
Как вы уже обнаружили, проблема с переходом системы в спящий режим была вызвана службой NFS. Чтобы успешно использовать команду rtcwake
, выполните следующие шаги:
-
Остановите службы, которые могут блокировать спящий режим. В вашем случае это
nfs-server.service
:sudo systemctl stop nfs-server.service
-
Попробуйте снова выполнить команду
rtcwake
:rtcwake -v -m disk -s 60
Проверка журналов
Если после остановки службы NFS проблема сохраняется, вам следует просмотреть журналы, чтобы выявить, что именно блокирует переход в спящий режим. Вы можете воспользоваться следующими командами для получения информации:
-
Проверка системного журнала:
dmesg | less
-
Просмотр логов
syslog
:less /var/log/syslog
Ищите в журналах сообщения об ошибках или предупреждения, которые могут указать на причину проблемы. Возможно, вам потребуется отключить другие службы или перезагрузить систему после внесения изменений.
Заключение
Ваша проблема была вызвана блокировкой NFS, и, как выяснили, после остановки этой службы команда rtcwake
работает корректно. Если вы столкнетесь с другими проблемами или ошибками, не забудьте проверять журналы на наличие дополнительной информации. Удачи!