J'ai un script que je laisse généralement tourner en arrière-plan ; il met en place une redirection de port que j'utilise pour les connexions à la base de données tout en développant une application dont les détails n'ont pas d'importance pour l'instant. Comme je veux que ce script tourne en permanence, je l'ai configuré pour qu'il démarre à chaque fois qu'un nouveau script s'ouvre - il vérifie si ce port est utilisé et commence la redirection si ce n'est pas le cas.
function forward {
if lsof -Pi :55433 -sTCP:LISTEN -t >/dev/null ; then
echo "redirect already running"
else
target=$(~/environment-destination.sh staging)
~/forwarder.sh 55433 stuff.rds.amazonaws.com:5432 $target > /dev/null &
echo "redirect running"
fi
}
Ce que je veux faire, c'est permettre à un autre script, exécuté dans n'importe quel script, d'arrêter ce script et de libérer le port. (Je veux cela principalement parce que je veux occasionnellement mettre en place une redirection vers l'instance de production au lieu de l'environnement de staging). J'ai essayé de sauvegarder le fichier pid
dans un fichier et de lancer pkill
sur elle, mais cela ne fonctionne pas - et pgrep
ne le trouve pas non plus. Existe-t-il une meilleure approche ?