GNU/Linux >> Linux Esercitazione >  >> Linux

usando i timer di sistema invece di cron

Una risposta a questa domanda è scambiare User=nobody non con User=ziga ma con User=root in /etc/systemd/system/battery.service . In qualche modo anche se l'utente ziga ha tutti i privilegi di usare sudo comando non può eseguire systemctl hibernate all'interno dello script bash. Non so davvero perché questo accada. Quindi i file di lavoro sono i seguenti:

/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
)

L'ho provato e funziona anche con User=ziga o User=nobody ma dobbiamo cambiare /usr/bin/systemctl hibernate in sudo /usr/bin/systemctl hibernate nell'ultima sceneggiatura. Quindi sembra User la variabile in qualche modo non ha nemmeno importanza ... Oh e puoi anche rimuovere i nomi assoluti dall'ultimo script e cambiare la prima riga da #!/bin/sh a #!/bin/bash . Ho anche cambiato WantedBy=timers.target a WantedBy=battery.service in /etc/systemd/system/battery.timer .

Ecco qua. La migliore alternativa a cron per ibernare i laptop con batteria scarica. =)


Forse dovresti provare ad aggiungere il primo avvio dopo l'avvio, in questo modo:

[Timer] OnBootSec=15min OnUnitActiveSec=2m


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. In che modo Systemd utilizza gli script /etc/init.d?

  3. Env Vars In /etc/environment non è visibile a livello globale?

  4. Centos:qual è la differenza tra /usr/lib/systemd/system e /etc/systemd/system?

  5. Come viene aggiornato /etc/motd?

Gestisci l'avvio usando systemd

Inizia a utilizzare systemd come strumento di risoluzione dei problemi

Utilizzo delle funzionalità di systemd per proteggere i servizi

SystemD - A cosa serve SystemD?

Come scoprire se un sistema utilizza SysV, Upstart o Systemd initsystem

Differenza tra /etc/hosts e /etc/resolv.conf