Systemd/cron : planificateurs de tâches

Salut à tous !

En m’inspirant d’un journal sur linuxfr.org, j’ai écrit un timer utilisant MPD qui me sert de réveil.

/etc/systemd/system/reveil.timer :

[code][Timer]
OnCalendar=--* 07:00:00

[Install]
WantedBy=timers.target[/code]
/etc/systemd/system/reveil.service :

[code][Unit]
After=mpd.service

[Service]
ExecStart=/usr/bin/mpc play[/code]

Il me semble que systemd permet aussi de lancer des services en tant qu’un utilisateur donné plutôt qu’avec root, et comme mpc ne nécessite nullement d’être exécuté avec les droits de root je cherche à convertir ces unités pour les lancer avec mon utilisateur habituel.

Bien sûr, ça ne se résume pas à déplacer ces fichiers de /etc/systemd/system/ vers /etc/systemd/user/, je fais donc appel à votre aide pour comprendre comment fonctionne le lancement de services via un utilisateur.

Merci d’avance !

Je sais que “systemd” nécessite “dbus” pour fonctionner (ce qui a d’ailleurs été fortement décrié). Donc je suppose qu’on doit pouvoir l’utiliser en tant qu’utilisateur pour lancer des services, mais ce n’est qu’une idée, je n’ai pas d’autres éléments concrets pour appuyer mes propos.

Il y a sans doute une raison que je ne connais pas, mais pourquoi utiliser [mono]systemd[/mono](qui est par définition asynchrone) alors que [mono]cron/mono est fait pour ça ?

Il y a aussi la fonctionnalité du démarrage automatique de la machine par la RTC (Real Time Clock).

Et on pourrait même coupler les deux (cron => script+conditions+shutdown => RTC).

Honnêtement, parce que la syntaxe de cron m’a toujours fait peur, alors que celle de systemd m’a tout de suite parue assez intuitive.
Mais si tu peux me montrer que je me trompe au niveau de la complexité que j’associe à cron (je ne l’ai jamais vraiment utilisé), systemd n’est absolument pas un impératif pour cette tâche.

Je vais me renseigner sur cette fonctionnalité par pure curiosité, mais ce ne sera pas utile ici : cette machine n’est éteinte que le temps des redémarrages requis pour passer à un nouveau noyau ou pour changer quelque chose au niveau matériel.

Sincèrement il n’y a pas de quoi :wink: c’est celle de systemd qui me parait lourde et verbeuse.
Et pour ton problème tu ne te serais même pas poser la question :stuck_out_tongue:

systemd apporte pas mal d’améliorations mais il complexifie tellement le bousin que je ne suis pas sûr qu’au final on y gagne beaucoup :confused:

bonjour,

 il complexifie tellement le bousin que je ne suis pas sûr qu'au final on y gagne beaucoup

dans un premier temps “simpliste”, ma séquence de boot est plus rapide,
j’ai un autre Linux, il est encore plus rapide, mais nbre de process différents 184/297
ensuite les µP non pas le meme nbre de cores et des fréquences différents

ensuite, soit le man soit google, ce produit et ses dérivées vont servir à quoi?
j’ai fait un strings empd, c’est un drôle d’outil

je sors mais je regarde la discussion intéressante
A+
JB1

Pour tes 3 première tentative de phrase :
Je sais que dans les scripts de démarrage la conf de systemd est largement plus simple, mais quand tu voi la conf nécessaire pour une tâche de type Cron il y a un certain décalage de simplification
Pour le nombre de process il fait du “lasy loading” et ne créé pas 36 process pour lancer un service, donc il est logique qu’il arrive a réduire de près de 30% le nombre de thread créé au démarrage.

pour le reste de ton message j’ai rien compris :075 fait un effort d’expression STP

Je ne doute pas de ce que tu avances, mais tu pourrais me montrer comment faire la même chose (lancer une commande à un horaire précis de manière quotidienne) avec cron pour que je puisse le constater par moi-même ?
cron permet-il aussi comme c’est le cas avec systemd de facilement désactiver/activer le timer (systemctl stop/start reveil.timer) ? (important si je tiens à m’offrir une grasse matinée)

Merci énormément !! Je pensais que c’était dépendant du matériel et du BIOS mais apparemment on peut le faire même lorsque la fonctionnalité n’est pas présente dans le BIOS ! Ca va tellement me simplifier la vie pour administrer mes ordis ! :041

La page wikipedia est assez bien foutue fr.wikipedia.org/wiki/Crontab je t’invite a la lire.

Sinon pour l’dés/activation d’une tache bien particulière il te faut éditer le fichier (cron -e) et commenter la ligne qui va bien(#).
Sinon tu peux te préparer des conf suivant ce que tu souhaite et les charger simplement en faisant :

Pas exactement ce que tu m’as demandé mais c’est tout aussi puissant.

Pour ce qui est de la syntaxe elle est relativement simple :

[quote=“wikipedia”]Chaque entrée de la table (chaque ligne) correspond à une tâche à exécuter et doit respecter cette notation :
mm hh jj MMM JJJ tâche
mm représente les minutes (de 0 à 59)
hh représente l’heure (de 0 à 23)
jj représente le numéro du jour du mois (de 1 à 31)
MMM représente l’abréviation du nom du mois (jan, feb, …) ou bien le numéro du mois (de 1 à 12)
JJJ représente l’abréviation du nom du jour ou bien le numéro du jour dans la semaine :
0 = Dimanche
1 = Lundi
2 = Mardi

6 = Samedi
7 = Dimanche (représenté deux fois pour les deux types de semaine)

Pour chaque valeur numérique (mm, hh, jj, MMM, JJJ) les notations possibles sont :

  • : à chaque unité (0, 1, 2, 3, 4…)
    5,8 : les unités 5 et 8
    2-5 : les unités de 2 à 5 (2, 3, 4, 5)
    */3 : toutes les 3 unités (0, 3, 6, 9…)
    10-20/3 : toutes les 3 unités, entre la dixième et la vingtième (10, 13, 16, 19)[/quote]

Donc pour tous les jour a une certaine heure (11h34) il faut :

Si tu veux un réveil (7h00) pour la semaine mais pas le WE :

Et tu as des raccourcis bien pratique :

Raccourcis Description Équivalent @reboot Au démarrage Aucun @yearly Tous les ans 0 0 1 1 * @annually Tous les ans 0 0 1 1 * @monthly Tous les mois 0 0 1 * * @weekly Toutes les semaines 0 0 * * 0 @daily Tous les jours 0 0 * * * @midnight Tous les jours 0 0 * * * @hourly Toutes les heures 0 * * * *

Cron n’est pas aussi précis car il ne va pas jusqu’à la seconde mais je ne pense pas que ce soi vraiment indispensable. Et quand ça le devient en général on passe par un ordonnanceur qui fait ça pour nous

[quote=“MicP”]Il y a sans doute une raison que je ne connais pas, mais pourquoi utiliser [mono]systemd[/mono](qui est par définition asynchrone) alors que [mono]cron/mono est fait pour ça ?
[/quote]

systemd à une precision d’une seconde. Tu me diras ça peut sembler gadget, mais sur des systèmes minimalistes c’est très interessant (comme l’est déjà udev):

  • la ligne d’info de dwm
  • un auto-reconnect wifi bas de gamme, reactif, avec un simple ping, mais qui contrairement à guessnet n’est pas capricieux (chez moi du moins).

Tout ça sans daemon. Certes avec [mono]mksh-static[/mono] le sleep est integré et les ressources utilisées sont minimales (~ 246k de RAM) mais c’est plus facile à gérer avec systemd sur le coup (pas besoin de pidfile et compagnie).

J’ai tenté mais j’ai laché l’affaire pour l’instant, à la lecture de ceci : bbs.archlinux.org/viewtopic.php?id=177274