Для дистрибутивов Linux, использующих systemd, есть ли практическая разница между этими двумя командами?
systemctl suspend
pm-suspend
Что я должен использовать или предпочитать?
Короче говоря, вы должны предпочитать режим приостановки, встроенный в ваш дистрибутив. Для дистрибутивов, которые поставляют systemd, это типично systemctl suspend
.
Например, вики Linux Arch говорит :
systemd предоставляет собственные команды для приостановки, гибернации и гибридной приостановки, подробности см. в разделе «Управление питанием с помощью systemd». Это интерфейс по умолчанию, используемый в Arch Linux.
С systemd,
pm-utils
и его перехватчики больше не используются, вместо этого естьsystemd-suspend
.
Причина, по которой вы хотите придерживаться того, что использует ваш дистрибутив, заключается в том, что их пакеты, которые заботятся о приостановке / возобновлении, будут поставлять скрипты ловушек, которые интегрируются либо с pm-utils
( /usr/lib/pm-utils/sleep.d
), либо systemd
( /usr/lib/systemd/system-sleep/
), поэтому вы должны использовать один и тот же интерфейс, чтобы иметь все нужные крючки работают как положено.
Кроме того, дистрибутивы обычно подключают надлежащий метод приостановки / гибернации к ACPI для аппаратных событий, окружений рабочего стола (для кнопок выключения, которые допускают приостановку / гибернацию), а также с помощью экранных заставок / блокировок и т. Д.
Оба pm-suspend
и systemd-suspend
обычно используют одни и те же интерфейсы, чтобы фактически перевести компьютер в спящий режим.
Оба по умолчанию используют драйвер приостановки ядра (записывая в /sys/power/state
) и оба поддерживают внешние драйверы приостановки (например uswsusp
, см. Здесь для получения подробной информации о том, как подключить его к systemd.)
Они оба поддерживают файлы конфигурации и скрипты ловушек, которые вызываются в процессе приостановки или возобновления, основное отличие заключается в расположении файлов (API ловушек очень похож):
pm-utils
читает его конфигурацию из файлов /etc/pm/config.d
и выполняет перехваты из обоих /etc/pm/sleep.d
и /usr/lib/pm-utils/sleep.d
каталогов.systemd-suspend
читает его конфигурацию из /etc/systemd/sleep.conf
файла (или файлов в sleep.conf.d
каталоге) и выполняет перехваты из /usr/lib/systemd/system-sleep/
.Итак, с этой точки зрения оба выглядят очень похожими ...
Но systemd идет дальше в своей поддержке suspend / hibernate / resume, так как:
systemctl suspend
все же, конечно, вариант.) Обычно запуск приостановки через D-Bus, а не с помощью команды полезно из рабочего стола.Таким образом, несмотря на то, что и то, pm-utils
и другое systemd-suspend
обеспечивает реальное приостановление работы системы примерно одинаковыми способами, интеграция с другими компонентами системы делает так, что важно, какой из них называется ... А в дистрибутивах, поставляющих systemd, systemctl suspend
обычно право позвонить.
pm-utils
установлен по умолчанию и, похоже, на него полагаетсяsystemctl
, но в нем/usr/lib/pm-utils/sleep.d/
есть что-то и/usr/lib/systemd/system-sleep/
его нет. Тем не менее, я вижу/lib/systemd/system-sleep/
и еще несколько/snap/
, все из которых имеют один или два файла в них.