[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Tuer un script après une durée fixe



Bonsoir,

On 02/27/2018 05:38 PM, steve wrote:

> C'est en tout cas intéressant et je n'y avais pas du tout pensé. Il
> faudrait pour cela écrire un fichier /etc/systemd/system/macamera.service
> contenant quelque chose comme
> 
> [Unit]
> Description=Mise en marche de la caméra
> 
> [Service]
> Type=idle
> ExecStart=$HOME/bin/script.sh
> RuntimeMaxSec=15 # en secondes
> 
> [Install]
> WantedBy=multi-user.target
> 
> avec un fichier correspondant /etc/systemd/system/macamera.timer
> 
> [Unit]
> Description=Heure de lancement
> 
> [Timer]
> OnCalendar=10:00:00 # à 10h le matin
>                    [Install]
> WantedBy=timers.target

Faire du script un daemon me semble aussi une très bonne idée.
Et pour le coup, on peut sans doute dire beaucoup de choses sur
systemd, mais faire d'un petit script (qui ne forke pas) un
daemon est vraiment très simple.

Personnellement, je laisserais de côté les RuntimeMaxSec and
co pour faire au plus simple (ie un daemon qui doit être UP
H24) et je gérerais la plage d'exécution de la commande directement
dans le script shell avec un truc dans ce genre là (non testé hein) :

---%<-------%<-------%<-------%<-------%<-------%<---
#!/bin/sh

# Imaginons qu'on veuille que le « machin » tourne
# entre 17h30 et 18h30 (choix au pif).
start_time=1730
stop_time=1830

while true
do
    # Petite pause de 30 secondes...
    sleep 30

    now=$(date +"%H%M")

    # On teste si on a : 17h30 =< now < 18h30. Si c'est le cas, alors
    # il faut lancer la commande.
    if [ "$now" -ge "$start_time" ] && [ "$now" -lt "$stop_time" ]
    then
        delta=$((stop_time - now))
        # Ici on met la commande qui-va-bien avec le timeout.
        raspivid [options] | timeout -s KILL "${delta}m" ffmpeg [autres options] 
    fi
done
---%<-------%<-------%<-------%<-------%<-------%<---

À+

-- 
François Lafont


Reply to: