Boucle infinie dans FreeBSD
-
08-07-2019 - |
Question
J'ai un script qui crée constamment des erreurs de segmentation - le problème que je ne peux pas résoudre en tant que erreur de segmentation est lié aux liaisons python libxml - ne les a pas écrites. Ok, donc sous Linux, j’exécutais un inf.loop pour que, lorsque le script meurt, il redémarre, comme suit:
#!/bin/bash
while [ 1 ]
do
nice -n 19 python server.py
sleep 1
done
Eh bien, je n'arrive pas à trouver / bin / bash dans FreeBSD, donc cela ne fonctionne pas.
Des idées? Considérez que cron n'est pas une option - les temps d'arrêt autorisés sont de quelques secondes.
La solution
/ bin / sh existe presque certainement, mais si vous avez vraiment besoin de bash:
cd /usr/ports/*/bash
make install
qui devrait installer bash dans / usr / local / bin / bash, je crois
Autres conseils
Il y aura un programme shell sur le système, et ce script semble fonctionner dans pratiquement tous les shell.
Tapez , tapez bash
pour voir où se trouve bash. Sinon, essayez sh. Il devrait être là et cela devrait fonctionner. Prenez le résultat de type bash
ou type sh
et utilisez-le à la place de / bin / bash. Sinon, regardez / etc / passwd, recherchez votre compte et notez ce qu'est le shell. Je crois que c'est le dernier champ, et il va dire quelque chose comme / bin / sh ou / usr / bin / bash ou autre chose. Utilisez cela à la place de / bin / bash.
Vous n'êtes pas sûr du shell utilisé par défaut par FreeBSD, mais il en contient probablement quelques-uns. La page de manuel de tout shell que vous utilisez doit vous indiquer la syntaxe de boucle de ce shell. C'est probablement assez similaire.