Riesumo il post perché ho trovato un modo molto pulito per killare un certo processo. Come ha suggerito
@Moffetta88 useremo i Cron, in particolare i timer di systemd che sono un'alternativa ai Cron veri e propri.
Il prerequisto fondamentale è che il processo in questione sia avviato tramite systemd. Ad esempio questo è il service per avviare swayidle:
Codice:
[Unit]
Description=Idle manager for Wayland
Documentation=man:swayidle(1)
PartOf=graphical-session.target
[Service]
Type=simple
ExecStart=/usr/bin/swayidle -w \
timeout 1800 'swaymsg "output * dpms off"' \
timeout 2700 'swaylock -f -i ~/Immagini/sfondo.png --font-size 18' \
resume 'swaymsg "output * dpms on"'
[Install]
WantedBy=sway-session.target
I servizi che girano senza permessi di root vanno messi in : ~/.config/systemd/user. Dopo che il nostro servizio è stato abilitato e avviato con successo possiamo stopparlo tramite un timer. Il timer vuole due cose:
- Un'unità servizio da avviare (che chiameremo wakener.service).
- Un'unità timer da schedulare (che chiameremo wakener.timer).
La nostra unità servizio (wakener.service) da avviare sarà:
Codice:
[Unit]
Description=Service to stop swayidle
[Service]
Type=oneshot
ExecStart=/usr/bin/systemctl --user stop swayidle.service
[Install]
WantedBy=sway-session.target
È molto semplice, un normale servizio che stoppa un altro servizio. Infine l'unità timer (wakener.timer) sarà il componente che avvierà il nostro servizio in un dato momento. Nel mio caso il wakener.service viene avviato ogni sera alle 21:00:
Codice:
[Unit]
Description=Timer to stop swayidle
[Timer]
OnCalendar=*-*-* 21:00:00
[Install]
WantedBy=timers.target
Tutto ciò che rimane da fare è abilitare il timer e controllare che tutto sia a posto:
Bash:
systemctl --user enable --now wakener.timer
systemctl --user list-timers --all
Questa è una soluzione casalinga che mi sono inventato, magari in giro ci sono modi migliori per fare il tutto quindi non prendetelo come oro colato ma sembra comunque un modo migliore di usare
pkill
o
killall
.
P.S. Alcuni
WantedBy
che vedete sono necessari per far funzionare il servizio con Sway, se non utilizzate Sway dovrete ovviamente cambiarli.