J'essaie de créer un script de démarrage et un script d'arrêt pour mon projet. J'ai besoin de lancer un auto-compilateur sass ainsi qu'un serveur, et de rediriger la sortie des deux dans un fichier. J'utilise lite-server
et sass --watch
pour cela.Tuer des processus d'arrière-plan sous Linux
Pour que ces processus s'exécutent simultanément, j'utilise &
pour mettre en arrière-plan les processus. Cela pose le défi d'arrêter les scripts, je ne peux pas arrêter les scripts en utilisant Ctrl+C
comme je le ferais normalement. J'ai pensé que je surmonterais cela en stockant les identifiants de processus dans un fichier texte.
je suis venu avec le script suivant « start »:
# Start a sass watcher and a server running simultaneously. Store the PIDs in a
# text file so that the processes can be easily stopped.
(
lite-server &
echo $! > .pids.txt &
sass --watch sass:css --style=compressed &
echo $! >> .pids.txt &
) &> log.txt
cat .pids.txt
Ensuite, pour arrêter les processus, j'utilise
kill $(cat .pids.txt)
L'écriture des ID de processus dans un fichier texte semble genre de hackish. Y a-t-il une meilleure façon d'accomplir ce que j'essaie de faire?
Sans écrire les PID dans un fichier texte, si ces processus ne peuvent s'exécuter qu'une seule fois (une instance) dans votre machine, vous pouvez utiliser la commande 'killall'. 'killall -s KILL lite-server sass' (individuellement ou en combinaison) – VanagaS
Ok, cool. Je ne pensais pas que ce serait la meilleure pratique, mais c'est logique. –