2010-12-13 5 views
3

Je suis en train de construire un script sur ubuntu pour commencer un code Erlang de la mine:script pour démarrer le code Erlang

le script est quelque chose comme:

#!/bin/sh 

EBIN=$HOME/path_to_beams 

ERL=/usr/local/bin/erl 
export HEART_COMMAND="$EBIN/starting_script start" 

case $1 in 

    start) 
    $ERL -sname mynode -pa $EBIN \ 
     -heart -detached -s my_module start_link 
    ;; 

    *) 
    echo "Usage: $0 {start|stop|debug}" 
    exit 1 
esac 

exit 0 

mais je vais avoir quelques problèmes. Tout d'abord, le code ne peut être exécuté que si le script est dans le même répertoire que les faisceaux, cela me semble étrange, j'ai vérifié les chemins, alors pourquoi le drapeau -pa ne fonctionne-t-il pas? Deuxièmement, le script (sans le -pa) fonctionne bien, mais si j'essaie de démarrer à la place du module principal (un gen_server) son superviseur (-s my_module_sup start_link) ça ne marche pas ... c'est étrange, parce que si je démarre le superviseur à partir d'un shell normal tout fonctionne bien. Troisièmement, le drapeau -heart devrait redémarrer le script en cas d'échec, mais si je tue le processus avec un kill Unix normal, le processus n'est pas redémarré.

Quelqu'un peut-il me donner quelques conseils?

Merci à l'avance,

PDN

Répondre

1

La première chose qui vient à l'esprit est que vous utilisez erlexport au lieu de erl. Je ne sais pas pourquoi vous faites cela (je n'ai jamais entendu parler de erlexport auparavant). Essayez plutôt avec erl.

Votre drapeau -heart n'aura pas de sens si le nœud Erlang lui-même est tué car le processus ne peut pas rester en vie. Vous auriez besoin d'un autre processus en cours d'exécution qui surveille le processus Erlang et le redémarre s'il est tué.

+0

salut, il y avait un problème dans le couper-coller je suppose, la commande est bien sûr erl, puis il y a une nouvelle ligne avec la partie d'exportation ... – pdn