Salut, j'ai crée un script pour lancer un serveur de jeu et j'ai décidé de lui attribuer un service sur systemd. Le tout marche très bien, mais j'aimerais que le service s'exécute et se termine à certaine période, l'idéal serait un démarrage tous les soirs à 20h et une fin à 2h. Comme je n'ai pas l'habitude d'utiliser cron et de mettre en place ce genre de configuration (oui c'est ma première fois), j'aurais besoin de vos conseils. La seule idée que j'ai trouvé se serait de créer un second script pour cron qui s'occuperait de démarrer et tuer le service. Est-ce une bonne approche ? Je me disais qu'il serait peut-être plus judicieux d'utiliser directement mon script avec cron, plutôt que de créer un service.
Le but final, c'est de ne pas consommer des ressources et de la bande passante pour un serveur de jeu que j'utiliserais de temps en temps le soir, je veux aussi permettre aux autres d'en profiter le soir. Oui, c'est une machine branchée à la maison qui me sert d’auto-hébergement pour tous mes services (web, mail, xmpp, etc.), donc je dois faire correctement les choses. D'ailleurs, est-il possible de limiter le charge cpu pour un processus ?
Merci !
Script pour cron :
#!/bin/bash
if [ ! -z "$1" ]; then
if [ "$1" == "start" ]; then
systemctl start steam-cmd
elif [ "$1" == "stop" ]; then
systemctl stop steam-cmd
fi
else
echo "No parameters were specified"
fi
# plus simple
Posté par NeoX . Évalué à 7.
si tu veux vraiment le faire avec cron
maintenant je ne serais pas surpris qu'il soit possible de dire à systemd de lancer un process à une certaine heure, et de le couper à une autre, sans passer par cron (mais j'ai pas encore systemd sur mes machines)
[^] # Re: plus simple
Posté par shingo (site web personnel) . Évalué à 2.
Ah merci ! Je n'y avais pas pensé, du coup ça simplifie grandement les choses, je vais supprimer le script et utiliser ta méthode. Par contre pour systemd, j'ai cherché dans la documentation, mais je n'ai rien trouvé à ce sujet…
[^] # Re: plus simple
Posté par RoPP . Évalué à 5.
Normalement, ça doit faire l’affaire :
http://www.freedesktop.org/software/systemd/man/systemd.timer.html
https://wiki.archlinux.org/index.php/Systemd/Timers
[^] # Re: plus simple
Posté par shingo (site web personnel) . Évalué à 3.
Super ! Ça va grandement simplifier les choses, excellent ! Merci beaucoup.
# systemd / timers
Posté par pralines . Évalué à 6. Dernière modification le 14 octobre 2014 à 20:10.
tant qu'à faire du systemd, autant y aller à fond ;-)
https://wiki.archlinux.org/index.php/Systemd/Timers
edit : damned, grillé
Envoyé depuis mon Archlinux
[^] # Re: systemd / timers
Posté par shingo (site web personnel) . Évalué à 2.
J'ai réussi à utiliser le timer, mais il existe un paramètre pour indiquer à systemd quand tuer le service ? Je n'ai rien trouvé dans la documentation…
[^] # Re: systemd / timers
Posté par Ambroise . Évalué à 1.
Essaie de créer 2 timers : un qui démarre le service et un qui l'arrête.
[^] # Re: systemd / timers
Posté par Sylvain Blandel . Évalué à 1.
J'ai buté sur le même problème : on peut démarrer un service avec un timer, mais peut-on arrêter un service avec un timer ? Il semblerait que non.
Je m'en suis sorti en créant un second timer, qui lançait un service incompatible avec le premier service.
Création d'un timer pour lancer le service
steam-cmd.service
:$ cat /etc/systemd/system/steam-cmd.timer
Ce timer lancera
steam-cmd.service
à 20h.Création du service
stop-steam-cmd.service
, incompatible avecsteam-cmd.service
:$ cat /etc/systemd/system/stop-steam-cmd.service
Le lancement de
stop-steam-cmd.service
va arrêter (« Conflicts »)steam-cmd.service
.Création d'un timer pour lancer le service
stop-steam-cmd.service
:$ cat /etc/systemd/system/stop-steam-cmd.timer
Ce timer lancera
stop-steam-cmd.service
à 2h.On valide nos modifications :
$ systemctl daemon-reload
Il ne reste qu'à lancer nos deux timers :
$ systemctl start steam-cmd.timer stop-steam-cmd.timer
et à automatiser leur lancement au démarrage de l'ordinateur :
$ systemctl enable steam-cmd.timer stop-steam-cmd.timer
Ça fait beaucoup de choses pour automatiser le lancement et l'extinction d'un service :-) Pour cet exemple,
cron
est peut-être plus pertinent que les timers de systemd !# Limite de charge cpu
Posté par Sidonie_Tardieu . Évalué à 5.
On peut faire ça très simplement :
cpulimit options prog
cputool options prog
nice NN prog
Pour un sextumvirat ! Zenitram, Tanguy Ortolo, Maclag, xaccrocheur, arnaudus et alenvers présidents !
[^] # Re: Limite de charge cpu
Posté par NeoX . Évalué à 6.
et
ìonice programme
pour limiter ses entrées sorties (souvent disque dur, qui font ramer le PC)
[^] # Re: Limite de charge cpu
Posté par shingo (site web personnel) . Évalué à 2.
Au top, ça me sera très pratique afin de ne pas avoir de surprises. Merci :)
[^] # Re: Limite de charge cpu
Posté par Sylvain Blandel . Évalué à 1.
Tu peux même intégrer ces options directement dans ton service systemd : Nice et IOSchedulingClass.
Voici un exemple.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.