Stopper un processus lorsque sur batteries ?

Tags: #<Tag:0x00007f50a5382e60>

Bonjour,
Pour des raisons compliquées j’utilise de façon indispensable l’indexeur de fichiers (français!) Recoll, qui me permet très efficacement de retrouver instantanément n’importe quel doc, photo, pdf etc. dans mes gros disques en tapant à peine quelques mots.
Un seul souci : il indexe en permanence, même sur batteries, et même avec un “renice” bien senti, lorsque j’ai juste la machine sur les genoux, à taper bêtement ces lignes en utilisant 0,01% de CPU, il se déchaîne sur les processeurs, pompe la batterie à mort et déclenche mes ventilateurs comme un fou :wink:

Alors voilà : j’aimerais bien automatiser ce que je fais actuellement à la main : un terminal, et “kill -STOP” / “kill -CONT”, mais je ne sais pas bien comment faire pour

  • détecter le passage sur batterie
  • identifier le numéro du process recoll
  • lancer la commande stop
  • attendre le passage sur secteur et relancer cont…

Y aurait-il une sorte de script simple?
(je vois aussi que je peux utiliser le moniteur de tâches pour le même résultat, mais toujours à la main…)

Dans tous les cas merci!
Hervé

Salut
si ton outil recoll est lancé par un service systemd tu peux lui ajouter la condition
ConditionACPower=true qui impose d’être sur le courant alternatif.
https://www.freedesktop.org/software/systemd/man/systemd.unit.html#
C’est par exemple ainsi que fonctionne Anacron

/lib/systemd/system/anacron.service

[Unit]
Description=Run anacron jobs
After=time-sync.target
# By default, anacron will not run when no AC power is connected to system.
# If you are using systemd and want to run anacron even when running on
# battery, you should create the following file with the specified content
# and then call "systemctl daemon-reload":
#    /etc/systemd/system/anacron.service.d/on-ac.conf:
#        [Unit]
#        ConditionACPower=
# See /usr/share/doc/anacron/README.Debian for detailed information.
ConditionACPower=true
Documentation=man:anacron man:anacrontab

[Service]
EnvironmentFile=/etc/default/anacron
ExecStart=/usr/sbin/anacron -d -q $ANACRON_ARGS
IgnoreSIGPIPE=false
KillMode=mixed
# Use SIGUSR1 to stop gracefully
KillSignal=SIGUSR1

[Install]
WantedBy=multi-user.target
2 J'aime

super intéressant en effet! Je vais aller voir ça…
(un peu plus tard) -hélas, je viens d’aller voir dans /lib/systemd/system et je n’y trouve rien de resseblant à Recoll…
Tout ce que je vois, c’est dans le “tableau de bord” des applications à ouvrir au démarrage, c’est un Recoll appelé par “recollindex -w 60 -m”…

Et sinon, l’execution de scripts à la mise en veille/reprise est gèrée par pm-utils.
regades le role de /etc/pm/sleep.d dans le man pm-action.

.

tu parles de ce qui est dans ~/.config/autostart

au pire tu l’enlèves et tu crées toi même le service

En effet, et tu m’ouvres des perspectives!!
Ce week-end je m’en vais rechercher un petit cours sur la création de services pour les nuls, ce ne doit pas être trop compliqué. Merci encore!!
H.

pour un service lié à un utilisateur il faut le créer dans son home dans ~/.config/systemd/user/
le tester avec systemctl --user start
l’activer au démarrage systemctl --user enable

https://wiki.archlinux.org/index.php/Systemd/User

Volla ce qui est actif pour mon utilisateur

systemd-analyze --user blame
         15.022s alsa-restore.service
          1.745s pulseaudio.service
          1.635s evolution-source-registry.service
          1.494s evolution-calendar-factory.service
           555ms evolution-addressbook-factory.service
           263ms gnome-terminal-server.service
           166ms gvfs-udisks2-volume-monitor.service
           105ms gvfs-daemon.service
            81ms gvfs-gphoto2-volume-monitor.service
            73ms at-spi-dbus-bus.service
            66ms gvfs-mtp-volume-monitor.service
            53ms gvfs-goa-volume-monitor.service
            37ms gvfs-afc-volume-monitor.service
            20ms dbus.socket
1 J'aime