web-dev-qa-db-fra.com

Puis-je basculer un script avec une touche de raccourci?

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

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

Ce que je voudrais faire est de lier le script à une clé, disons 7 par exemple, 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 relier à l'aide de raccourcis clavier pour l'activer, mais le problème est que le fait d'appuyer à nouveau sur le raccourci ne crée qu'une autre instance du script, ce qui n'est pas ce que je veux.

3
Xanimede

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

#!/bin/bash

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

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

Utiliser

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

Si vous devez contrôler plusieurs scripts, définissez le ou les chemins d'accès comme un argument pour l'extrait de code ci-dessus.

4
Jacob Vlijm

Je ne pense pas qu’il soit possible d’agir de la sorte de la sorte.

Cependant, une option (un peu un bidouillage, mais bon, cela fonctionne) serait de modifier le script, afin qu'il puisse détecter une autre instance de son exécution. Ainsi, lorsque vous démarrez le second script via la liaison de clé, vous pouvez émettre un pkill ou quelque chose de similaire, afin de terminer la seconde et la première instance du script.

1
Frank van Wensveen