Salut,
La communauté m'a déjà aidé à créer un script de collecte de données d'usage d'un ordi (monitoring) dans un contexte de recherche en sciences de l'éducation.
ça a bien marché: je démarrais le script avant l'expérience et je pouvais ensuite analyser/visualiser les données avec matplotlib. Merci :-)
Je cherche maintenant à collecter le même type de données dans une expérience différente, pendant laquelle je n'ai pas accès aux ordis. La collecte de données doit être automatisée pour chaque fois que la participante utilise l'ordinateur; je dois retrouver un fichier de donnée pour chaque session d'usage.
Pour ce faire j'ai choisi systemd avec un fichier monitored.service dans /etc/systemd/system/ dont voici le contenu:
[Unit]
Description=Service global pour exécuter monitoring au démarrage
After=network.target
[Service]
Type=simple
ExecStart=/home/sysadmin/research/monitoring.sh
Restart=always
[Install]
WantedBy=multi-user.target
Le service est activé, mais le script fonctionne avec des erreurs, puisqu'aucun fichier de donnée est créé:
● monitored.service - Service global pour exécuter ./monitoring.sh au démarrage
Loaded: loaded (/etc/systemd/system/monitored.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-09-22 16:28:38 CEST; 16min ago
Main PID: 517 (monitoring.sh)
Tasks: 2 (limit: 8612)
Memory: 5.0M
CPU: 4.768s
CGroup: /system.slice/monitored.service
├─ 517 /bin/sh /home/sysadmin/research/monitoring.sh
└─7197 sleep 2
Sep 22 16:28:38 sysadmin-HP-EliteBook-840-G3 systemd[1]: Started Service global pour exécuter ./monitoring.sh au démarrage.
Sep 22 16:28:38 sysadmin-HP-EliteBook-840-G3 monitoring.sh[517]: /usr/bin/nproc
Sep 22 16:28:39 sysadmin-HP-EliteBook-840-G3 monitoring.sh[517]: Le nombre de coeurs s'élève à: 4
Sep 22 16:28:39 sysadmin-HP-EliteBook-840-G3 monitoring.sh[528]: No LSB modules are available.
C'est plutôt simple ce que je veux faire, mais n'y parviens pas encore. Systemd indique deux tâches: celle du script et celle dans le script du sleep 2. Est-ce que je supprime le sleep 2 dans le script et indique à systemd d'executer le service chaque 2 secondes? ça va me faire des tonnes de fichiers difficiles à analyser!
Le script en question
# Qques trucs...
Posté par gUI (Mastodon) . Évalué à 3 (+0/-0).
1/ Déjà tu lances un script utilisateur (sysadmin ?) via le système, pas bien !
Tu devrais plutôt le faire lancer toujours par systemd, mais via ton utilisateur.
Tu trouveras plein d'infos ici, mais je te résume:
~/.config/systemd/user/
--user
:systemctl --user enable toto.service
systemctl --user restart toto.service
Pour que le job reste actif même quand tu dois donner des droits spéciaux à ton utilisateur : (en root cette fois-(ci):
loginctl enable-linger <username>
(à ne faire qu'une fois donc)2/ Ensuite tu dois dire à ̀
systemd
où se trouve le répertoire dans lequel ton script sera exécuté. Dans ton service ajoute un ligne qui devrait ressembler àWorkingDirectory=%h/research/
Voilà, ça devrait aller mieux.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.