Commande pour quitter le script mais pas la session SSH
C'est mon premier article ici et je ne suis pas encore un expert en scripts Linux / Bash. :-)
J'ai donc écrit le code suivant pour mon Raspberry Pi et cela fonctionne bien, à l'exception d'un petit problème.
J'utilise SSH pour me connecter au Raspberry Pi.Lorsque la broche 17 est haute, (valeur logique numérique de 1 aka 5 volts), je veux que le message «J'ai remarqué un 1» imprimé sur la sortie du terminal, puis je veux quitter le script et restez toujours connecté au raspberry Pi.
Le problème auquel je suis confronté est que lorsque le script voit une valeur logique de 1, il arrête toute la connexion ssh et me ramène à la session du terminal de mon ordinateur portable.
Je ne veux pas que le script quitte la connexion ssh lorsque la broche 17 lit un 1. Je veux juste qu'il arrête d'exécuter le scriot et me ramène au terminal raspberry Pi où je suis toujours connecté au raspberry Pi afin que je puisse faire autre des trucs.
En gros, je ne veux PAS fermer la session SSH lorsque le scipt se termine. Pouvez-vous me donner quelques suggestions pour résoudre ce problème?
Merci pour la réponse!
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" return elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Réponses
Bienvenue dans Server Fault. Essayez d'utiliser le code suivant:
pin=17
gpio mode $pin in while true; do if [[ $(gpio read $pin) -eq 1 ]]; then echo "I noticed a 1 whcih means I noticed 5 volts!" kill -INT $$
elif [[ $(gpio read $pin) -eq 0 ]]; then
echo "Did not see a 1, so I will keep looping"
echo ""
sleep 2
fi
done
Je suppose que tu fais quelque chose comme
ssh raspberrypi /path/to/script
Donc, oui, lorsque le script se termine, la session ssh se termine également.
Cependant, dans le script, au lieu de quitter, lancez un shell interactif:
if [[ $(gpio read $pin) -eq 1 ]]; then
echo "I noticed a 1 whcih means I noticed 5 volts!"
exec bash -li
Cela remplace le processus de script en cours par un shell de connexion interactif.
Vous pourriez avoir besoin ssh -tou ssh -tt, tester sans d'abord.