Di mana harus meletakkan skrip yang dijalankan saat komputer dilanjutkan?

8

Saya perlu mengunci layar ketika komputer saya terbangun dari memori yang tertunda,

Jadi saya mencoba untuk menempatkan skrip berikut ke /usr/lib/pm-utils/sleep.ddan /etc/pm/sleep.d, tetapi tidak pernah dieksekusi,

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        vlock -ans
        ;;
    *) exit $NA
        ;;
esac

PS Ini pm-suspendtidak pm-hibernate.

EDIT

Mencoba layanan systemd juga, tidak berhasil:

# /etc/systemd/system/[email protected]
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=root
Type=simple
ExecStart=vlock -ans

[Install]
WantedBy=suspend.target

Dan saya systemctl enable [email protected]juga menelepon , vlock tidak dipanggil.

bunga aster
sumber
3
Apakah Anda yakin itu tidak akan dieksekusi? Dapatkah Anda mencoba untuk hanya login atau melakukan sesuatu sepertiecho executed script >> /tmp/resume
Ulrich Dangel

Jawaban:

2

AFAIK ExecStartingin path lengkap ke executable.

Coba dengan ExecStart=/usr/bin/vlock -ansdi/etc/systemd/system/[email protected]

lviggiani
sumber
1

Apakah Anda mengatur izin dan pemilik seperti yang dijelaskan dalam wiki?

Pastikan skrip dapat dieksekusi (chmod 755) dan dimiliki oleh root: root

Mamitzi
sumber
1

Anda mencoba membuat pengait sendiri, bukan? Saya membaca dokumentasi Arch Linux pada pm-utils (tautan di bawah) dan saya akan memeriksanya terlebih dahulu:

  • nama skrip (mulai dengan dua digit, patuhi skema dalam dokumen)
  • lokasi skrip: /etc/pm/sleep.d adalah tempat yang tepat
  • mode skrip: chmod + x /etc/pm/sleep.d/66scriptname

Jika Anda yakin semua itu benar, pertimbangkan skrip itu sendiri.

Berikut ini tautan ke dokumen yang saya baca tentang ini: https://wiki.archlinux.org/index.php/pm-utils#Creating_your_own_hooks

Script Anda tidak seperti yang ditunjukkan di sana. Anda memanggil / bin / sh bukannya / bin / bash. Anda menggunakan qout ganda sekitar $ 1 dan tidak. Anda menggabungkan opsi dan mereka tidak. Semuanya harus baik-baik saja, bukan? Kecuali mungkin sh versus bash.

Bagaimana kalau menaruh beberapa pernyataan logger atau gema di sana untuk debugging dan kemudian memeriksa log untuk melihat apakah skrip Anda memulai. Dan jika ya, seberapa jauh hasilnya.

Mike Diehn
sumber
Apakah systemd bekerja dengan pm-utils? Saya tidak yakin tentang itu ;-)
daisy
0

Saya menemukan semua direktori dengan melakukan "sudo strace pm-hibernate 2>/root/myfile.log", atau Anda dapat mengganti pm-hibernate dengan pm-suspend. Setelah beberapa saat mesin akan mati. Kemudian ketika Anda menyalakan / melanjutkan lagi, baca myfile.log, dan di dalamnya semua skrip, konfigurasi, file log diakses / ditulis.

Untuk Fedora 20 saya, mereka adalah:

/usr/lib64/pm-utils/pm-functions
/usr/lib64/pm-utils/defaults
/usr/lib64/pm-utils/module.d
/etc/pm/config.d
/etc/pm/pm-suspend.config.d
/var/run/pm-utils/locks/pm-suspsnd.lock
/var/run/pm-utils/pm-suspend/storage/parameters

dll dan beberapa direktori lainnya.

Bantu diri Anda dengan distro spesifik Anda untuk versi spesifik (Fedora 20 menggunakan systemd btw).

Peter Teoh
sumber