98 votes

Comment puis-je déclencher une notification lorsqu'un travail/processus se termine ?

L'endroit où je travaille a des commandes qui prennent beaucoup de temps à exécuter.

Existe-t-il une commande/un utilitaire que je peux utiliser pour m'avertir de la fin de l'exécution de la commande ? Il pourrait s'agir d'une fenêtre popup ou d'un petit son.

146voto

slhck Points 209720

En général, si vous savez que avant en exécutant la commande, vous pouvez simplement la lancer avec :

command; command-after &

Ceci exécutera le command-after après la commande précédente s'est terminée (quel que soit son code de sortie). L'adresse & le lancera en arrière-plan.

Si vous vous souciez d'une sortie réussie ou non, utilisez respectivement :

command && command-after-only-if-success &
command || command-after-only-if-fail &

Si la commande a déjà commencé, vous pouvez utiliser le contrôle des tâches pour le suspendre, puis le ramener au premier plan avec fg enchaîné avec votre notification :

command
# enter Ctrl-z
fg ; command-after

Maintenant ce que vous voulez faire après cela dépend de votre environnement.

  • Sur tout système vous pouvez "sonner" la cloche du terminal . Cela dépend de votre système exact ce qui fonctionne vraiment (BSD vs. GNU Linux, etc.), mais tput bel devrait faire. Je ne pourrais pas le tester de manière fiable pour le moment, cependant. Faites une recherche sur "ring bell" pour en savoir plus.

  • Sur Mac OS X vous pouvez utiliser AppleScript pour faire apparaître une boîte de dialogue du Finder :

    osascript -e 'tell Application "Finder" to display dialog "Job finished" '

    Tu pourrais lui faire dire quelque chose :

    say "Job finished"

    Vous pouvez également utiliser le système de notification de Mountain Lion :

    sudo gem install terminal-notifier # <= only need to do this once
    terminal-notifier -message "Job finished!" -title "Info"
  • En GNOME , zenity peut afficher une boîte de dialogue GTK, appelée depuis la ligne de commande. Voir aussi cette question de Stack Overflow : afficher une boîte de message à partir d'un bash script sous linux . Il peut être installé via votre gestionnaire de paquets préféré.

    zenity --info --text="Job finished"
  • Certaines distributions peuvent avoir xmessage . Spécifiquement pour les environnements GTK, il existe gxmessage .

  • Sur les environnements de bureau qui mettent en œuvre le Spécification des notifications de bureau comme Ubuntu y GNOME il y a un système de notification que vous pouvez déclencher avec notify-send (partie de libnotify ).

    notify-send "Job finished!"
  • KDE utilise kdialog par exemple :

    kdialog --passivepopup 'Job finished'

22voto

trinth Points 317

Sur les systèmes de type unix, vous pouvez faire sonner la cloche audible :

echo -e "\a"

9voto

Viktor Fröberg Points 91

J'ai créé un outil simple, pour MacOS X, qui fait exactement cela. https://github.com/vikfroberg/brb

Installation

$ npm install -g brb

Instructions

$ sleep 3; brb

7voto

Daniel Schep Points 71

J'ai écrit ntfy dans ce but précis. Il s'agit multiplateforme et peut automatiquement envoyer des notifications lorsque les commandes en cours d'exécution se terminent.

Si vous disposez de l'outil Python pip (la plupart des distributions Linux et MacOS l'ont), voici comment l'installer et activer les notifications automatiques :

$ sudo pip install ntfy
$ echo 'eval "$(ntfy shell-integration)"' >> ~/.bashrc
$ # restart your shell

Consultez le site http://ntfy.rtfd.io

En plus de cela, il peut aussi :

  • supprimer les notifications automatiques lorsque le terminal est au premier plan (X11, iTerm2 & Terminal.app supportés et activés par défaut)
  • envoyer des notifications basées sur le cloud (Pushover, Pushbullet et XMPP)
  • être utilisé pour envoyer des notifications lorsqu'un processus se termine (pas le support automatique mentionné ci-dessus)
  • envoyer manuellement des notifications (bon pour une utilisation dans les scripts !)

6voto

milkovsky Points 211

Pour obtenir une notification sonore, vous pouvez utiliser spd-say "Some text" . Exemple :

some-command; spd-say "Yo"

UPDATE

Si vous n'avez pas le speech-dispatcher pré-installé, vous pouvez l'installer via :

sudo apt-get install speech-dispatcher

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X