GNU/Linux >> Belajar Linux >  >> Linux

menggunakan pengatur waktu systemd, bukan cron

Jawaban atas pertanyaan ini adalah menukar User=nobody bukan dengan User=ziga tetapi dengan User=root di /etc/systemd/system/battery.service . Entah bagaimana bahkan jika pengguna ziga memiliki semua hak istimewa untuk menggunakan sudo perintah itu tidak dapat mengeksekusi systemctl hibernate di dalam skrip bash. Saya benar-benar tidak tahu mengapa ini terjadi. Jadi file yang berfungsi adalah sebagai berikut:

/etc/systemd/system/battery.service

[Unit]
Description=Preko skripte preveri stanje baterije in hibernira v kolikor je stanje prenizko

[Service]
Type=oneshot
ExecStart=/home/ziga/Dropbox/workspace/operacijski/archlinux/hibernate/hibernatescript
User=root
Group=systemd-journal

/etc/systemd/system/battery.timer

[Unit]
Description=Periodical checking of battery status every two minutes

[Timer]
OnBootSec=2min
OnUnitActiveSec=2min 

[Install]
WantedBy=battery.service

/home/ziga/Dropbox/workspace/operacijski/archlinux/hibernate/hibernatescript

#!/bin/sh
/usr/bin/acpi -b | /usr/bin/awk -F'[,:%]' '{print $2, $3}' | (
        read -r status capacity
        if [ "$status" = Discharging ] && [ "$capacity" -lt 7 ]; then
                /usr/bin/systemctl hibernate
        fi
)

Saya mencobanya dan semuanya berfungsi dengan User=ziga atau User=nobody tapi kita perlu mengubah /usr/bin/systemctl hibernate ke dalam sudo /usr/bin/systemctl hibernate dalam naskah terakhir. Jadi sepertinya User variabel entah bagaimana bahkan tidak masalah ... Oh dan Anda juga dapat menghapus nama absolut dari skrip terakhir dan mengubah baris pertama dari #!/bin/sh ke #!/bin/bash . Saya juga mengubah WantedBy=timers.target ke WantedBy=battery.service di /etc/systemd/system/battery.timer .

Ini dia. Alternatif cron terbaik untuk laptop hibernasi dengan baterai lemah. =)


Mungkin Anda harus mencoba menambahkan start pertama setelah boot, seperti ini:

[Timer] OnBootSec=15min OnUnitActiveSec=2m


Linux
  1. Kelola startup menggunakan systemd

  2. Mulai gunakan systemd sebagai alat pemecahan masalah

  3. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  1. Bagaimana Systemd Menggunakan Skrip /etc/init.d?

  2. Memindahkan Kebiasaan Sysvinit Lama ke Systemd?

  3. Linux – Bagaimana Cara Mengatur Afinitas Cpu Default Untuk Semua Daemon Di Systemd?

  1. Env Vars Di /etc/environment Tidak Terlihat Secara Global?

  2. Centos – Apa Perbedaan Antara /usr/lib/systemd/system Dan /etc/systemd/system?

  3. Bagaimana /etc/motd Diperbarui?