Apakah Systemd membaca / etc / pm / ...?

14

Apakah sistem menggunakan systemdskrip baca dan eksekusi /etc/pm/sleep.d/?

Saya mulai menyimpulkan jawabannya adalah systemdmengabaikan skrip-skrip ini. Jika ini benar apa penggantinya?

Perbarui: man systemd-sleepmenyatakan skrip dapat ditambahkan /lib/systemd/system-sleep/. Detailnya tidak cukup untuk saya, tetapi saya mencoba modifikasi contoh Arch wiki dan dibuat /lib/systemd/system-sleep/root-resume.service.

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

Tujuan saya adalah memulai kembali manajer jaringan setelah melanjutkan karena kadang-kadang tidak berfungsi.

Ini sepertinya tidak melakukan apa yang saya inginkan.

Sean
sumber
Saya menemukan bahwa skrip /etc/pm/sleep.d masih akan berjalan jika Anda mengetik sudo pm-suspenddari cmdline. Hanya systemd tidak akan menggunakannya dari alur kerjanya.
Tomofumi

Jawaban:

13

Script dalam /etc/pm/config.d|power.d|sleep.ddiabaikan di bawah systemd. Sebaliknya "unit" (layanan) systemd harus dibuat dan diaktifkan.

Untuk memulai kembali jaringan setelah sistem melanjutkan dari tidur saya membuat file /lib/systemd/system/root-resume.service:

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

Kemudian saya mengaktifkan layanan dengan sudo systemctl enable root-resume.service. Mengaktifkan layanan membuat tautan simbolis untuk file dalam/etc/systemd/system/suspend.target.wants/

Bertentangan dengan man systemd-sleepfile layanan yang ditempatkan di /lib/systemd/system-sleep/diabaikan.

Sean
sumber
Ya, justru inilah alasan mengapa skrip "restart jaringan setelah penundaan" tidak berfungsi untuk orang yang menjalankan ubuntu dengan systemd.
neo1691
Ini harus dibuat sebagai /etc/systemd/system/root-resume.service. Anda tidak boleh memodifikasi file di bawah / lib karena dikelola oleh manajer paket, untuk menghindari cacat dan potensi kerusakan pada peningkatan, belum lagi penyederhanaan cadangan.
hackel
2

Tidak, maupun orang-orang di /usr/lib/pm-utils/sleep.d. Tetapi ia menjalankan semua skrip (bukan file layanan) /lib/systemd/system-sleep/dengan bit yang dapat dieksekusi diatur.

Berikut ini contoh untuk memanggil pm-powersave, dimodifikasi dari /usr/lib/pm-utils/sleep.d/00powersave.

#!/bin/sh

# do not run pm-powersave on ARM during suspend; the 1.5 seconds that it takes
# to run it don't nearly compensate the potentially slightly slower suspend
# operation in low power mode
ARCH=`uname -m`

case $1 in
    pre)  [ "$ARCH" != "${ARCH#arm}" ] || pm-powersave false ;;          
    post) pm-powersave ;;
esac
exit 0

$ 1 adalah "pos" pada resume, "pra" sebaliknya. $ 2 dalam kedua kasus mengandung "menangguhkan", "hibernate", atau "hybrid-sleep".

Martin Thornton
sumber