3 votes

Peut-on basculer un script avec une touche de raccourci ?

J'ai un bash script sur mon bureau appelé script.sh .

Actuellement, si je veux l'exécuter, j'ouvre un terminal et je tape ./script.sh et si je veux l'arrêter, je dois appuyer sur Ctrl + C

Ce que j'aimerais faire, c'est lier le script à une clé, par exemple 7 par exemple, de sorte que si le script est désactivé, et que j'appuie sur 7 il est allumé, et s'il est déjà allumé, et j'appuie sur 7 il est éteint.

Je sais déjà comment le lier dans des raccourcis clavier pour l'activer, mais le problème est qu'appuyer à nouveau sur le raccourci ne fait que créer une autre instance du script, ce qui n'est pas ce que je veux.

4voto

Jacob Vlijm Points 78990

En supposant que votre script est exécutable, vous pouvez facilement basculer le script avec le minuscule script ci-dessous :

#!/bin/bash

scriptpath='/full/path/to/script'

if ! pgrep -f "$scriptpath"
then
    nohup "$scriptpath" &
else
    pkill -f "$scriptpath"
fi

Pour utiliser

  1. Copier le code dans un fichier vide, le sauvegarder en tant que toggle_scrip.sh
  2. Dans la ligne scriptpath='/full/path/to/script' , entrez le chemin complet de votre script (entre guillemets simples).
  3. Rendez-le exécutable et lancez-le à partir d'un raccourci.

Dans le cas où vous avez besoin de contrôler plusieurs scripts, faites du ou des chemins un argument au snippet ci-dessus.

1voto

Je ne pense pas qu'il soit possible de faire basculer quelque chose de cette façon par une liaison de touches.

Cependant, une option (un peu un hack, mais hé, ça marche) serait de modifier le script, afin qu'il puisse détecter une autre instance de lui-même en cours d'exécution. De cette façon, lorsque vous démarrez le second script par le biais du keybinding, vous pourriez émettre un pkill ou quelque chose de similaire, pour terminer à la fois la seconde et la première instance du script.

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