GNU/Linux >> Tutoriales Linux >  >> Linux

usando temporizadores systemd en lugar de cron

Una respuesta a esta pregunta es intercambiar User=nobody no con User=ziga pero con User=root en /etc/systemd/system/battery.service . De alguna manera, incluso si el usuario ziga tiene todos los privilegios de usar sudo comando que no puede ejecutar systemctl hibernate dentro del script bash. Realmente no sé por qué sucede esto. Así que los archivos de trabajo son los siguientes:

/etc/systemd/system/battery.servicio

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

Lo probé y también funciona con User=ziga o User=nobody pero necesitamos cambiar /usr/bin/systemctl hibernate en sudo /usr/bin/systemctl hibernate en el último guión. Entonces parece User la variable de alguna manera ni siquiera importa... Ah, y también puede eliminar los nombres absolutos del último script y cambiar la primera línea de #!/bin/sh a #!/bin/bash . También cambié WantedBy=timers.target a WantedBy=battery.service en /etc/systemd/system/battery.timer .

Ahí tienes La mejor alternativa de cron para hibernar portátiles con poca batería. =)


Puede ser que deba intentar agregar el primer inicio después del arranque, así:

[Timer] OnBootSec=15min OnUnitActiveSec=2m


Linux
  1. Use temporizadores systemd en lugar de cronjobs

  2. Administrar el inicio usando systemd

  3. Comience a usar systemd como una herramienta de solución de problemas

  4. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  5. ¿Cómo utiliza Systemd los scripts /etc/init.d?

Uso de las funciones de systemd para proteger los servicios

SystemD - ¿Para qué se utiliza SystemD?

¿Cómo configurar un trabajo cron para ejecutar un ejecutable cada hora?

¿Cómo saber si estoy usando systemd en Linux?

Cómo saber si un sistema usa SysV, Upstart o Systemd initsystem

Diferencia entre /etc/hosts y /etc/resolv.conf