Comment exécuter d'autres commands dans un script de démarrage Linux après le démarrage d'un process

J'essaie d'écrire un script de démarrage qui exécute une application (MapProxy) après un redémarrage du server. Mon server exécute Ubuntu 11.04 Natty 64 bits.

Dans le script, exec python /$path/"config.py" & un python script exec python /$path/"config.py" & qui crée avec succès un fcgi.socket avec lequel le server Web peut communiquer. Cependant, j'ai besoin de faire fcgi.socket en écriture ou MapProxy ne fonctionnera pas, c'est-à-dire que j'ai besoin d'action sur un chmod.

Il semble qu'après avoir actionné la config.py, je perds le contrôle dans le script de démarrage – ça ne passe pas pour que le fcgi.socket puisse être écrit. Des idées?

 #! /bin/bash : exec python /$path/"config.py" & exec chmod o+w /$path/"fcgi.socket" & exit 0 

3 Solutions collect form web for “Comment exécuter d'autres commands dans un script de démarrage Linux après le démarrage d'un process”

Nouveau script:

 #! /bin/bash python /$path/"config.py" && chmod o+w /$path/"fcgi.socket" 

& envoie un process en background et exécute immédiatement le prochain process. && attend la valeur de return du dernier process et si elle est nulle, le process suivant est démarré.

En supprimant votre exit 0 , vous obtiendrez le code d'erreur de n'importe quel process exécuté en dernier dans le script. Il devrait être nul, mais cette façon de propagation si vous avez une erreur.

Retirez les symboles exec s et & . Cela défigure le traitement en arrière-plan afin que la prochaine command puisse s'exécuter immédiatement. En effet, vous modifiez les permissions sur un file qui n'existe pas encore, car il faut du time pour que votre première command s'exécute et crée le socket.

Le bit important que vous semblez manquer est ce que fait la partie exec . De l' help exec de bash: "Remplacez le shell par la command donnée". Lorsque vous dites exec python /$path/"config.py" votre script dit essentiellement" J'ai fini ici, laissez Python l'emporter à partir d'ici, exécutez ce script Python, et tout ce qu'il returnne est ce que je renvoie ". Donc, rien plus tard dans le script ne sera exécuté. Il n'est pas logique d'utiliser la sortie, sauf si c'est la dernière chose que votre script fait.

Vous avez "quitter 0" à la fin de ce script qui dit "mon script devrait se terminer comme si tout avait réussi, peu importe ce qui aurait pu échouer". Si c'est vraiment ce que vous voulez, alors vous ne voulez pas utiliser exec, puisque votre code de sortie de scripts sera le code de sortie de n'importe quel process que vous exécutez. Au lieu de cela, vous pourriez vouloir renvoyer un résultat d'échec réel de python ou de chmod si vous en obtenez un.

  • Nginx 10k connections simultanées
  • Ubuntu 9.04, Postfix, Dovecot, Squirrelmail et les messages de vacances / de sortie
  • Autoriser les connexions à distance à la base de données MySql
  • RAID5 et les bitmaps d'écriture persistante
  • mysql sur virtualbox avec datadir sur dossier partagé
  • server nodejs et conflit nginx
  • L'ordre du module cloud-init est incorrect, comment réparer?
  • dhclient ne définit pas la passerelle par défaut
  • Comment "yum update" / "aptitude safe-upgrade" de nombreux hôtes?
  • Comment savoir si un port est disponible sur Ubuntu 8.04?
  • Puis-je compiler mon propre PHP tout en conservant celui fourni avec Ubuntu?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.